Moving Data Between Clouds

Featured image of post Moving Data Between Clouds

Moving Data Between Clouds

Using Rclone, we can move data between different vendor's clouds with ease.

Introduction

I had someone reach out with a request. They needed to move thousands of pictures and movies from a business Dropbox account to a Google Drive account. They thought they would have to do this manually, item by item, and asked if I had any faster solutions. I used Rclone in the past for my Plex server and knew it could easily accomplish this task.

The Plan

All of the data we are working with is in the cloud, so we will use a cloud server for this. Utilizing its fast internet connection, we can move the data very quickly. I use Digital Ocean for all of my other cloud computing, so they were an easy choice for this. Their servers charge by the hour, so we will plan as much as possible in advance to keep costs low. Digital ocean’s “Premium CPU” droplets have a 10 Gbps connection, while the rest have 2, so we will be using one of them to maximize speed.

Setting Up Rclone

Configuring Rclone ahead of time will save us computing costs. Download Rclone and install it. This guide uses Ubuntu hosts but the same commands should work on WSL or Windows. After its installed run rclone config and connect your clouds. Rclone calls each of these connections a remote. Setup instructions vary wildly depending on cloud, the Rclone website is great for this..

In our example our remotes are called drop for Dropbox and drive for Google Drive. A normal command for Rclone is rclone COMMAND remote:path so for example rclone lsd drive:Pics. You will need to access the rclone.conf file located at ~/.config/rclone/rclone.conf, this file will be transferred to our cloud server.

While here, check the size of the data you will be moving. We will be moving the Pics folder from our drop:/ remote, so my command to check size will be rclone size drop:/Pics. We will use this information to make sure we transferred everything.

The size of the data we will be transferring. (Pic taken in WSL, I forgot to grab a picture of this.)

Note On Dropbox Work Boxes

For Dropbox specifically, just remote: accesses your personal Dropbox. If you have a business one as well, you need to add a / as well. So for us to access the work Dropbox, we type drop:/.

Creating the VM

I used Ubunbu for this. Create your VM, I did Ubuntu Server 24.04 LTS, with 4 Premium AMD cores and 8GB of RAM. Premium AMD for the faster network speeds. Once its live, login and install rclone. wget the 64 bit .deb from the downloads page, and install with dpkg -i rclone_package_name, tab is your friend. Once its installed, copy your rclone.conf file from earlier to ~/.config/rclone/rclone.conf.

Transferring Data

I recommend doing this in a screen session so you don’t have to leave the terminal open for the entire transfer. For my specific use, the Rclone command I used was:

rclone copy drop:/Pics drive:Pics --progress --transfers 10 --checkers 20 --buffer-size 32Mi.

  • We included the / in the Dropbox remote to ensure we are using the Work Box
  • --progress to show us progress during the transfer
  • --transfers 10 increases the number of simultaneous transfers to better utilize the fast hardware we are running on
  • --checkers 20 works with the above flag, does best when it is 2x whatever transfers is
  • --buffer-size 32Mi I am unsure if this did much, but the server had a lot of RAM so I wanted to make sure Rclone used as much as it wanted.

With these settings, I got some impressive transfer speeds, 1.4 Gbps upload and download, simultaneously. I did not get a screenshot of it, but the 124GB of data transferred in 1 hour and 13 minutes.

Bandwidth, Processor and transfer statistics.

After the transfer completes, check the size in the destination to make sure it matches. It does!

The size of the data on the Google Drive.

Closing Notes

This worked very well, and was easy to execute. If this becomes a regular thing, I will probably make an Ansible Playbook for it to speed up execution even more.