Rclone


Rclone is an open source, command line computer program to manage files on cloud storage. Its capabilities include sync, transfer, encrypt, cache, union and mount. The rclone website lists [|fifty supported backends] including S3 services and consumer file sharing platforms.
Descriptions of rclone often carry the strapline Rclone syncs your files to cloud storage. Those prior to 2020 include the alternative Rsync for Cloud Storage. Users have called rclone The Swiss Army Knife of cloud storage, and likened it to magic.
Whilst rclone is well known for its rlone sync and rclone mount [|commands], it provides further file management functions analogous to those ordinarily used for local disks.
Rclone is widely used at hpc research sites to transfer large datasets. Examples include the University of Maryland, Iowa State University, University of Utah, National Institutes of Health, Wharton, Yale, Minnesota, Michigan State, and Berkeley.
Official Ubuntu, Debian, Fedora, Brew, Chocolatey, and other package managers include rclone.

History

Nick Craig-Wood was inspired by rsync. His wife's concerns about the noise and power costs arising from their home computer servers prompted him to begin developing rclone in 2012.
Rclone was promoted to stable version 1.00 in July 2014.
In May 2017 Amazon barred new rclone users from its consumer Amazon Drive data storage product. Amazon Drive had been advertised as offering unlimited storage for £55 per year. Amazon blamed security concerns and also banned other upload utilities. Amazon's more expensive AWS S3 service continues to support new rclone users.
The original rclone logo was retired to be replaced with the present one in September 2018.
Amazon's AWS April 2020 public sector blog explained how the Fred Hutch Cancer Research Center were using rclone in their Motuz tool to migrate very large biomedical research datasets in and out of AWS S3 object stores.
May 2020 reports stated rclone had been used by hackers that attacked Diebold Nixdorf ATMs.

Backends

The following services are supported as rclone backends. There are others, built on standard protocols such as WebDAV or S3, that work.
| Alibaba Object Storage System | Amazon Drive | Amazon S3 | Backblaze B2 | Box | Ceph | Citrix ShareFile | C14 | DigitalOcean Spaces | Dreamhost | Dropbox | FTP | Google Cloud Storage | Google Drive | Google Photos | HTTP | Hubic | Jottacloud | IBM COS S3 | Koofr | Mail.ru Cloud | Memset Memstore | Mega | Microsoft Azure Blob Storage | Microsoft OneDrive | Minio | Nextcloud | OVH | OpenDrive | OpenStack Swift | Oracle Cloud Storage | ownCloud | pCloud | premiumize.me | put.io | QingStor | Rackspace Cloud Files | rsync.net | Scaleway | Seafile | SFTP | StackPath | SugarSync | Tardigrade | Wasabi | WebDAV | Yandex Disk
One, or more, remotes are defined from these backends, local disk, or memory, with rclone config. Rclone can further layer those remotes through virtual, encrypted, chunked, cached, vfs-cached or union backends.
Once defined, the remotes are referenced by other rclone commands interchangeably with the local drive. Remote names are followed by a colon to distinguish them from local drives. For example, a remote example_remote containing a folder, or pseudofolder, myfolder is referred to within a command as example_remote:/myfolder. Many rclone commands refer to directories, not files.
Rclone directly addresses remotes, or mounts them, for other programs, as if a conventional disk. It also serves remotes over SFTP, HTTP, WebDAV, FTP and DLNA.

Commands

Usage:
rclone
Available Commands:
about Get quota information from the remote.
authorize Remote authorisation.
cachestats Print cache stats for a remote
cat Concatenates any files and sends them to stdout.
check Checks the files in the source and destination match.
cleanup Clean up the remote if possible
config Enter an interactive configuration session.
copy Copy files from source to dest, skipping already copied
copyto Copy files from source to dest, skipping already copied
copyurl Copy url content to dest.
cryptcheck Cryptcheck checks the integrity of a crypted remote.
cryptdecode Cryptdecode returns unencrypted file names.
dbhashsum Produces a Dropbox hash file for all the objects in the path.
dedupe Interactively find duplicate files and delete/rename them.
delete Remove the contents of path.
deletefile Remove a single file from remote.
genautocomplete Output completion script for a given shell.
gendocs Output markdown docs for rclone to the directory supplied.
hashsum Produces an hashsum file for all the objects in the path.
help Show help for rclone commands, flags and backends.
link Generate public link to file/folder.
listremotes List all the remotes in the config file.
ls List the objects in the path with size and path.
lsd List all directories/containers/buckets in the path.
lsf List directories and objects in remote:path formatted for parsing
lsjson List directories and objects in the path in JSON format.
lsl List the objects in path with modification time, size and path.
md5sum Produces an md5sum file for all the objects in the path.
mkdir Make the path if it doesn't already exist.
mount Mount the remote as file system on a mountpoint.
move Move files from source to dest.
moveto Move file or directory from source to dest.
ncdu Explore a remote with a text based user interface.
obscure Obscure password for use in the rclone.conf
purge Remove the path and all of its contents.
rc Run a command against a running rclone.
rcat Copies standard input to file on remote.
rcd Run rclone listening to remote control commands only.
rmdir Remove the path if empty.
rmdirs Remove empty directories under the path.
serve Serve a remote over a protocol.
settier Changes storage class/tier of objects in remote.
sha1sum Produces an sha1sum file for all the objects in the path.
size Prints the total size and number of objects in remote:path.
sync Make source and dest identical, modifying destination only.
touch Create new file or change file modification time.
tree List the contents of the remote in a tree like fashion.
version Show the version number.

Academic evaluation

In 2018, University of Kentucky researchers published a conference paper comparing use of rclone and other command line, cloud data transfer agents for big data. The paper was published as a result of funding by the National Science Foundation.
In 2018, the University of Utah Center for High Performance Computing examined the impact of rclone options on data transfer rates.

Future

Rclone can serve a beta, web based remote control, graphical interface - rclone rc.
An rclone virtual, compression backend is under development to address small file, and compressible file format, transfer capacity.
There have been persistent calls for a --magic flag to improve rclone.

Rclone and rsync

transfers files between computers it is installed on. Rsync operates at the block level and has a delta algorithm so that it only needs to transfer changes in files. Rclone has a wider range of file management capabilities, and types of backend it can address, but only works at a whole file/object level. Rclone decides which of those whole files to transfer after obtaining checksums, to compare, from the remote server. Where checksums are not available, rclone can use file size and time.
Eponymous cloud storage service rsync.net provides remote unix filesystems so that customers can run rsync and other standard unix tools. They also offer rclone only accounts.