{"id":19096521,"url":"https://github.com/sapcc/cyclone","last_synced_at":"2026-01-16T11:39:36.842Z","repository":{"id":41954532,"uuid":"245370422","full_name":"sapcc/cyclone","owner":"sapcc","description":"Clone OpenStack entities easily","archived":false,"fork":false,"pushed_at":"2026-01-12T19:16:29.000Z","size":6960,"stargazers_count":22,"open_issues_count":6,"forks_count":6,"subscribers_count":44,"default_branch":"master","last_synced_at":"2026-01-13T00:41:41.806Z","etag":null,"topics":["availability-zone","availability-zones","clone","cloud","migration","migration-tool","openstack","openstack-cinder","openstack-instance","openstack-nova","openstack-swift","virtual-machine","vm"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sapcc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-03-06T08:47:00.000Z","updated_at":"2026-01-12T19:16:40.000Z","dependencies_parsed_at":"2024-09-16T19:27:41.454Z","dependency_job_id":"ec87f4af-e3d6-4c2c-bb41-97a5d03f6c33","html_url":"https://github.com/sapcc/cyclone","commit_stats":null,"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"purl":"pkg:github/sapcc/cyclone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sapcc%2Fcyclone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sapcc%2Fcyclone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sapcc%2Fcyclone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sapcc%2Fcyclone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sapcc","download_url":"https://codeload.github.com/sapcc/cyclone/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sapcc%2Fcyclone/sbom","scorecard":{"id":589941,"data":{"date":"2025-08-11","repo":{"name":"github.com/sapcc/cyclone","commit":"231a2a2d59f1f429e700c245d3d0d58fb792e8c5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.5,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":3,"reason":"Found 1/3 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:40","Info: jobLevel 'packages' permission set to 'read': .github/workflows/codeql.yml:36","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:39","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/golangci-lint.yml:9","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:15","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/sapcc/cyclone/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/sapcc/cyclone/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:98: update your workflow using https://app.stepsecurity.io/secureworkflow/sapcc/cyclone/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golangci-lint.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/sapcc/cyclone/golangci-lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golangci-lint.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/sapcc/cyclone/golangci-lint.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/golangci-lint.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/sapcc/cyclone/golangci-lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/sapcc/cyclone/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/sapcc/cyclone/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/sapcc/cyclone/release.yml/master?enable=pin","Info:   0 out of   7 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.4.2 not signed: https://api.github.com/repos/sapcc/cyclone/releases/190909143","Warn: release artifact v0.4.1 not signed: https://api.github.com/repos/sapcc/cyclone/releases/165689724","Warn: release artifact v0.4.0 not signed: https://api.github.com/repos/sapcc/cyclone/releases/155493591","Warn: release artifact v0.3.1 not signed: https://api.github.com/repos/sapcc/cyclone/releases/150739199","Warn: release artifact v0.3.0 not signed: https://api.github.com/repos/sapcc/cyclone/releases/108606026","Warn: release artifact v0.4.2 does not have provenance: https://api.github.com/repos/sapcc/cyclone/releases/190909143","Warn: release artifact v0.4.1 does not have provenance: https://api.github.com/repos/sapcc/cyclone/releases/165689724","Warn: release artifact v0.4.0 does not have provenance: https://api.github.com/repos/sapcc/cyclone/releases/155493591","Warn: release artifact v0.3.1 does not have provenance: https://api.github.com/repos/sapcc/cyclone/releases/150739199","Warn: release artifact v0.3.0 does not have provenance: https://api.github.com/repos/sapcc/cyclone/releases/108606026"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yml:18"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'master'","Info: 'stale review dismissal' is required to merge on branch 'master'","Info: required approving review count is 2 on branch 'master'","Info: codeowner review is required on branch 'master'","Info: 'last push approval' is required to merge on branch 'master'","Warn: no status checks found to merge onto branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2025-3787 / GHSA-fv92-fjc5-jj9h"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":9,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 28 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T21:36:10.144Z","repository_id":41954532,"created_at":"2025-08-20T21:36:10.144Z","updated_at":"2025-08-20T21:36:10.144Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478352,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["availability-zone","availability-zones","clone","cloud","migration","migration-tool","openstack","openstack-cinder","openstack-instance","openstack-nova","openstack-swift","virtual-machine","vm"],"created_at":"2024-11-09T03:36:57.208Z","updated_at":"2026-01-16T11:39:36.824Z","avatar_url":"https://github.com/sapcc.png","language":"Go","readme":"# cyclone\n\nClone OpenStack entities easily.\n\n## Why?\n\nIn modern clusters compute instances are considered as a Cattle, but there are exceptions, when a compute instance is a Pet and needs care, especially when you need to migrate or clone it to a new OpenStack region or availability zone.\n\nHere comes cyclone (**C**loud **Clone** or cclone) to help you with this task. It takes care about all volumes attached to a VM and clones them with all required intermediate type conversions.\n\n## Help\n\nBy default Glance image data will be streamed through cyclone and the traffic will be consumed on the execution side. To enable the Glance V2 [web-download](https://docs.openstack.org/glance/latest/admin/interoperable-image-import.html#image-import-methods) method, set the `--image-web-download` flag. This method allows Glance to download an image using a remote URL. It is not recommended to use **web-download** method for images bigger than 1-10GiB, since Glance service will try to download the image to its intermediate local storage and may cause insufficient disk space error.\n\nA remote URL can be generated using a Swift [Temporary URL](https://docs.openstack.org/swift/latest/api/temporary_url_middleware.html).\n\nA volume migration is performed by converting a volume to an image and further image migration between regions, then converting an image back to a volume.\n\nA volume migration within the same region is performed using a [Volume Transfer](https://docs.openstack.org/cinder/latest/cli/cli-manage-volumes.html#transfer-a-volume) method.\n\nBy default the tool uses the same credentials from environment variables for the source and destination projects, but for the destination you can define different region, domain and project name. It is also possible to override destination credentials via OpenStack environment variables with the `TO_` prefix or via CLI parameters.\n\n~\u003e **Note:** Be aware about the quota, especially the source project quota, when cloning a volume. It requires up to 2x source volume size Cinder (Block Storage) quota. If a `--clone-via-snapshot` flag is specified, the quota requirement increases up to 3x source volume size.\n\n~\u003e **Note:** Cloning a volume within the same region, but different availability zones requires an extra Swift storage quota. If you don't have an ability to use Swift in this case, you can specify a `--clone-via-snapshot` flag.\n\n~\u003e **Note:** It is strongly recommended to shut down the VM before you start a migration of a VM or its volumes.\n\n~\u003e **Note:** By default cyclone writes all OpenStack request/response logs into a `cyclone` directory, located in System Temporary Directory. Define `-d` or `--debug` flag if you want to see these logs in console output.\n\n```sh\nClone OpenStack entities easily\n\nUsage:\n  cyclone [command]\n\nAvailable Commands:\n  backup\n  completion     Generate the autocompletion script for the specified shell\n  help           Help about any command\n  image          Clone an image\n  secret         Clone a secret\n  security-group Clone a security group\n  server         Clone a server\n  share          Clone a share\n  version        Print version information\n  volume         Clone a volume\n\nFlags:\n  -d, --debug                                     print out request and response objects\n  -h, --help                                      help for cyclone\n      --image-web-download                        use Glance web-download image import method\n  -k, --insecure                                  Allow insecure server connections (use if you understand the risks)\n  -n, --no                                        assume \"no\" to all questions\n      --timeout-backup string                     timeout to wait for a backup status (default \"24h\")\n      --timeout-image string                      timeout to wait for an image status (default \"24h\")\n      --timeout-secret string                     timeout to wait for a secret status (default \"24h\")\n      --timeout-security-group string             timeout to wait for a security group status (default \"24h\")\n      --timeout-server string                     timeout to wait for a server status (default \"24h\")\n      --timeout-share string                      timeout to wait for a share status (default \"24h\")\n      --timeout-share-replica string              timeout to wait for a share replica status (default \"24h\")\n      --timeout-share-snapshot string             timeout to wait for a share snapshot status (default \"24h\")\n      --timeout-snapshot string                   timeout to wait for a snapshot status (default \"24h\")\n      --timeout-volume string                     timeout to wait for a volume status (default \"24h\")\n      --to-application-credential-id string       destination application credential ID\n      --to-application-credential-name string     destination application credential name\n      --to-application-credential-secret string   destination application credential secret\n      --to-auth-url string                        destination auth URL (if not provided, detected automatically from the source auth URL and destination region)\n      --to-domain string                          destination domain name\n      --to-password string                        destination username password\n      --to-project string                         destination project name\n      --to-region string                          destination region\n      --to-username string                        destination username\n  -y, --yes                                       assume \"yes\" to all questions\n\nUse \"cyclone [command] --help\" for more information about a command.\n```\n\n## Examples\n\n### Clone an image between regions\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone image 77c125f1-2c7b-473e-a56b-28a9a0bc4787 --to-region eu-de-2 --to-project destination-project-name --to-image-name image-from-source-project-name\n```\n\n~\u003e **Note:** Please ensure that your OpenStack user has sufficient permissions (e.g. `image_admin` and `swiftoperator` user roles) before initiating the above command.\n\n### Clone an image between regions using download/upload method\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone image 77c125f1-2c7b-473e-a56b-28a9a0bc4787 --to-region eu-de-2 --to-project destination-project-name --to-image-name image-from-source-project-name\n```\n\n### Clone a bootable volume between regions\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone volume c4c18329-b124-4a23-8546-cf1ca502ef95 --to-region eu-de-2 --to-project destination-project-name --to-volume-name volume-from-source-project-name\n```\n\n### Clone a volume within the same project, but different availability zones\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone volume 97d682ae-840f-461f-b956-98af30533a22 --to-az eu-de-2a\n```\n\n### Clone a server with all attached volumes to a specific availability zone\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone server 6eb76733-95b7-4867-9f83-a6ab19804e2f --to-az eu-de-2a --to-key-name my-nova-keypair\n```\n\n### Clone a server with a local storage to a server with bootable Cinder storage\n\n`--bootable-volume 16` will create a 16 GiB bootable volume from the source VM snapshot and create a new VM using this volume.\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone server 6eb76733-95b7-4867-9f83-a6ab19804e2f --bootable-volume 16 --to-key-name my-nova-keypair\n```\n\n### Clone a server with a local disk or a bootable volume only\n\n`--bootable-disk-only` flag allows to clone a VM with only a local disk or a bootable volume, ignoring all secondary attached volumes.\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone server 6eb76733-95b7-4867-9f83-a6ab19804e2f --bootable-disk-only --to-key-name my-nova-keypair\n```\n\n### Clone a server with a bootable volume to a server with a local disk\n\n`--local-disk` allows to clone a VM with a Cinder bootable volume to a VM with a local disk.\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone server 6eb76733-95b7-4867-9f83-a6ab19804e2f --local-disk --to-key-name my-nova-keypair\n```\n\n### Clone only server artifacts\n\nThe `--skip-server-creation` flag clones only images or volumes, which are used or attached to the source server. The destination server won't be created.\nThe example below will convert the server's local bootable disk to a bootable block storage, which can be attached to some server lately.\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone server 6eb76733-95b7-4867-9f83-a6ab19804e2f --bootable-volume 64 --skip-server-creation\n```\n\n### Upload a local image file into a backup\n\nProperties must be defined, when a backup supposed to be restored to a bootable volume.\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone backup upload my-file.vmdk --to-container-name swift-backup-container --volume-size=160 --threads=16 \\\n  -p hw_vif_model=VirtualVmxnet3 \\\n  -p vmware_ostype=sles12_64Guest \\\n  -p hypervisor_type=vmware \\\n  -p min_ram=1008 \\\n  -p vmware_disktype=streamOptimized \\\n  -p disk_format=vmdk \\\n  -p hw_video_ram=16 \\\n  -p vmware_adaptertype=paraVirtual \\\n  -p container_format=bare \\\n  -p min_disk=10 \\\n  -p architecture=x86_64 \\\n  -p hw_disk_bus=scsi\n```\n\n### Upload a remote Glance image into a backup\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone backup upload my-glance-image --to-container-name swift-backup-container --volume-size=160 --threads=16\n```\n\n### Transfer a big volume from one region to another\n\n~\u003e **Note:** The `cyclone backup upload` command produces high traffic and CPU/RAM usage. It's recommended to run it inside a VM, located in the target region.\n\nIn this case you need to convert a volume to an image first:\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone volume to-image my-cinder-volume --to-image-name my-glance-image\n```\n\nthen transfer it within multiple parallel connections to a target backup resource with a further volume restore action.\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone backup upload my-glance-image --to-container-name swift-backup-container --to-region my-region-1 \\\n  --volume-size=160 --threads=16 --restore-volume\n```\n\nIt's strongly recommended to run the `cyclone backup upload` command inside a VM, located in the source or the target region.\n\n### Create a new volume from an existing backup\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone backup restore my-backup\n```\n\n### Clone an existing backup to another region\n\n~\u003e **Note:** The `cyclone backup clone` command produces high traffic. It's recommended to run it inside a VM, located in the source or the target region.\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone backup clone my-backup --to-region my-region-1 --threads=16\n```\n\n### Manila shares support\n\nManila share type must support replicas, i.e.\n\n```sh\n$ openstack share type show default -c optional_extra_specs -f json | jq '.optional_extra_specs.replication_type'\n\"dr\"\n```\n\n#### Clone a Manila share to a new share in a new availability zone\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone share my-share --to-share-name my-new-share --to-az my-region-1b\n```\n\n#### Move an existing Manila share to a new availability zone\n\n```sh\n$ source openrc-of-the-source-project\n$ cyclone share move my-share --to-az my-region-1b\n```\n\n## Build\n\n```sh\n$ make\n# or within the docker container\n$ make docker\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsapcc%2Fcyclone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsapcc%2Fcyclone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsapcc%2Fcyclone/lists"}