A free open source tool for securely migrating data between cloud providers.
CloudShift currently supports AWS S3, Microsoft Azure Storage Accounts, and Cloudflare R2.
Built on RClone.
CloudShift is a web application available as a container on Docker Hub or for direct download by cloning this repo.
Steps for installing and running CloudShift using either method is outlined below.
If you do not have Docker installed, follow the installation instructions here.
-
Search for "cloudshiftdev/app" under the Containers tab.
-
Click the image. Making sure the latest tag is selected, click the "Pull" button to download.
-
After the download has completed, click "Run." Before clicking "Run" again, click Optional Settings and set the host post to your desired port.
-
In your browser, navigate to
localhost:HOST_PORT
whereHOST_PORT
is the host port set in the previous step.
-
In an open terminal, type
docker pull cloudshiftdev/app:latest
-
After the download is complete, run the container using
docker run -p HOST_PORT:3000 cloudshiftdev/app
, whereHOST_PORT
is your desired port. -
In your browser, navigate to
localhost:HOST_PORT
.
Before installing, download and install Node.js. Node.js 18.12 or higher is recommended.
-
In your terminal, run
git clone https://github.com/oslabs-beta/CloudShift.git
. -
Navigate to the Cloudshift folder and run
npm install
followed bynpm start
.NOTE: By default, this will open your browser to
localhost:3000
, however you can change the port by opening yourpackage.json
file.Under
scripts
>start
, changelocalhost:3000
to any port value.
After installation & navigating to CloudShift in your browser, click on your origin & destination cloud providers.
- Ex. if you are migrating an AWS S3 bucket to a Cloudflare R2 bucket, select AWS as origin and Cloudflare as destination.
Origin & Destination will then populate with the necessary required credentials to complete the transfer process.
Using root or admin level access credentials is recommended to ensure correct permissions for transferring data.
Credentials
- AWS
- Access Key/Secret Key: These are both available by clicking on your Profile > Security credentials. You may have to create a new access key if one does not exist.
- Azure Storage Account
- Account ID: The name of your storage account.
- Access Key: Within your storage account, click "Access keys" on the left navbar. Key1 or Key2 will work.
- Cloudflare R2
- Access Key/Secret Key: Under R2, click "Manage R2 API Tokens" > Create API Token. Make sure to select Edit permissions. Make note the Access Key ID & Secret Key.
- Account ID: You can find your Account ID on the right side of the main Cloudflare R2 page (clicking R2 on the left navbar).
Select your origin & destination buckets from the dropdown lists, which populate after you insert your credentials. Then, press the "Start Migration" button.
- It might take time for the transfer to begin. When "Transfer is complete" becomes visible, your data is now available on your destination bucket!
See Philosophy for the motivation behind our design decisions.
Built on Rclone.
Cloudshift...
-
Transfers data securely.
-
Will not corrupt your data or break your containers if the transfer process fails for any reason.
Couldshift does NOT...
-
Delete your origin bucket or any data within your origin bucket upon completition.
-
Store credentials/data. All config files are auto deleted after the transfer completes.
-
Address specific use-cases that don't apply to most users.
-
Currently(!) support same provider transfers.
If you find that CloudShift doesn't provide you with the granular control necessary for your use-case, or you wish to learn more about Rclone (and how the transfer process works), visit the Rclone docs.
For an in-depth read about our motivation, check out our Medium article here.
CloudShift seeks to abstract as much of the cloud data migration process as possible for the majority of use-cases. If you require granular control of the transfer process, we recommend using the Rclone CLI.
If you feel like CloudShift lacks a feature that fits with our design philosophy, connect with us or get involved.
Send us a message on our LinkedIn.
If this concerns a bug, submit an issue.
CloudShift is an open-source product that is open to input and contributions from the community. After trying out the product, feel free to raise issues or submit a PR request.
We welcome community contributions, including new developers who've never made an open source Pull Request before. If you'd like to start a new PR, we recommend creating an issue for discussion first. This lets us open a conversation, ensuring work is not duplicated unnecessarily and that the proposed PR is a fix or feature we're actively looking to add.