Skip to content

A tool for securely migrating object storage data between cloud providers.

License

Notifications You must be signed in to change notification settings

oslabs-beta/CloudShift

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CloudShift Logo


License

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.



Table of Contents

Installation & Getting Started

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.

#1. Docker (Recommended)

If you do not have Docker installed, follow the installation instructions here.

USING DOCKER DESKTOP

  • 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 where HOST_PORT is the host port set in the previous step.

USING A TERMINAL

  • 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, where HOST_PORT is your desired port.

  • In your browser, navigate to localhost:HOST_PORT.

#2. Node

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 by npm start.

    NOTE: By default, this will open your browser to localhost:3000, however you can change the port by opening your package.json file.

    Under scripts > start, change localhost:3000 to any port value.

Usage & Locating Credentials

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!

What CloudShift Does (and Doesn't)

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.

Philosophy

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.

Connect With the Team

Send us a message on our LinkedIn.

If this concerns a bug, submit an issue.

Want to Contribute?

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.