Rclone is a versatile tool that allows you to sync files between multiple machines, making it an essential utility for anyone working with remote machines.
To set up a Rclone remote machine, you'll first need to download and install Rclone on your local machine and the remote machine.
The Rclone remote machine can be set up to sync files over the internet or a local network, depending on your needs.
Rclone supports a wide range of cloud storage services, including Google Drive, Dropbox, and Microsoft OneDrive.
Configuring Rclone
To configure Rclone, you'll need to create a new remote server. This can be done by running the command `rclone config` and selecting option `n` for "New remote".
You can then choose from a list of storage providers, including remote SSH servers. To configure a remote SSH server, choose option `26` and select option `1`.
Rclone will then be configured to sync and copy files over SSH to a remote server with the name you specified.
To configure Rclone on a remote machine, you may need to use auto config. This can be done by running the command `rclone authorize "box"` on your local machine, and then pasting the authorization information into the remote terminal.
To configure Rclone on a Windows or macOS system, you can use the following steps:
- Open a command prompt or terminal
- Run the command `rclone authorize "box"`
- Follow the prompts to authenticate with your USDA email address
- Copy the authentication token and paste it into the remote terminal
Here's a summary of the steps to configure Rclone on a remote machine:
Accessing and Controlling the Rclone Remote
You can access and control the rclone remote using the rclone rc command, which is implemented in rclone itself.
To use the rclone rc command, simply run it on its own to see the help for the installed remote control commands.
The rclone rc command allows you to run a rclone terminal command over the remote control protocol.
Here's a breakdown of the command structure:
- command - a string with the command name.
- arg - a list of arguments for the backend command.
- opt - a map of string to string of options.
- returnType - one of ("COMBINED_OUTPUT", "STREAM", "STREAM_ONLY_STDOUT", "STREAM_ONLY_STDERR").
You can also enable the serving of remote objects via the HTTP interface using the --rc-serve flag, which allows you to browse to the remote objects at a specified IP address and port.
Accessing the Control via Command
You can access the remote control via the rclone rc command, which is implemented by Rclone itself. This command allows you to run remote control commands.
To see the help for the installed remote control commands, simply run rclone rc on its own. This will display the available commands and their usage.
The rclone rc command is a powerful tool for controlling Rclone, and it's worth exploring its capabilities further.
The command has several options, including command, arg, opt, and returnType. These options are used to specify the command name, arguments, options, and return type, respectively.
Here are the details of these options:
- command: a string with the command name
- arg: a list of arguments for the backend command
- opt: a map of string to string of options
- returnType: one of ("COMBINED_OUTPUT", "STREAM", "STREAM_ONLY_STDOUT", "STREAM_ONLY_STDERR")
The command returns a result from the backend command, which can be one of the following types:
- result: result from the backend command
- error: set if rclone exits with an error code
- returnType: one of ("COMBINED_OUTPUT", "STREAM", "STREAM_ONLY_STDOUT", "STREAM_ONLY_STDERR")
Copy URL to Object
You can copy a URL to an object using the copyurl command. This command requires four parameters: fs, remote, url, and autoFilename.
The fs parameter is a remote name string, such as "drive:". This tells the command which remote to use.
The remote parameter is a path within that remote, such as "dir". This specifies where to copy the URL to.
The url parameter is a string, which is the URL to read from.
If you set autoFilename to true, the command will retrieve the destination file name from the URL.
Here are the parameters in a concise list:
- fs - remote name string (e.g. "drive:")
- remote - path within that remote (e.g. "dir")
- url - URL to read from (string)
- autoFilename - boolean, set to true to retrieve destination file name from URL
Managing Files and Directories
Managing files and directories is a crucial part of using rclone. You can remove all empty directories in a remote path with the operations/rmdirs command, which requires three parameters: fs, remote, and leaveRoot.
The fs parameter is a remote name string, such as "drive:". The remote parameter is a path within that remote, like "dir". The leaveRoot parameter is a boolean that, when set to true, prevents the deletion of the root directory.
You can also list files in a remote directory using the rclone lsf command, which comes close to Unix's ls command. For example, you can use rclone lsf --max-depth 1 remote:path/to/dir to list files in a directory.
To create a new directory on a remote, you can use the rclone mkdir command, which behaves like Unix's mkdir. To create a new directory on a remote named "drive:" with the path "dir", you would use rclone mkdir drive:dir.
Here's a summary of the main file and directory management commands:
- operations/rmdirs: Remove all empty directories in a remote path
- rclone lsf: List files in a remote directory
- rclone mkdir: Create a new directory on a remote
- operations/stat: Give information about a file or directory
Copy a File
You can copy a file from one remote location to another using the rclone copy command. This command is useful for duplicating files across different storage services or devices.
To use the rclone copy command, you'll need to specify the source and destination remotes. The source remote includes the file system name and the path to the file you want to copy. For example, if you're copying a file from a remote named "drive:" to a file named "file.txt", the source remote would be "drive:file.txt".
The destination remote also includes the file system name and the path to where you want to copy the file. If you're copying the file to a remote named "drive2:", the destination remote would be "drive2:file2.txt".
Here are the common parameters you'll need to specify for the rclone copy command:
- srcFs: a remote name string, e.g. "drive:" for the source
- srcRemote: a path within that remote, e.g. "file.txt" for the source
- dstFs: a remote name string, e.g. "drive2:" for the destination
- dstRemote: a path within that remote, e.g. "file2.txt" for the destination
Here's a simple example of how to use the rclone copy command:
rclone copy drive:file.txt drive2:file2.txt
Sync: Move Directory
Syncing directories can be a bit tricky, especially when working with remotes. To move a directory from one remote to another, you'll need to specify the source and destination remote names.
The source remote name, srcFs, is a string that identifies the location of the directory you want to move. For example, if the source directory is located on a drive called "src", you would enter "drive:src" as the srcFs.
The destination remote name, dstFs, is also a string that identifies the location where you want to move the directory. In this case, you would enter "drive:dst" as the dstFs.
You can also choose to create empty source directories on the destination remote if you want to, by setting createEmptySrcDirs to true. On the other hand, you can also delete empty source directories if you want to, by setting deleteEmptySrcDirs to true.
Here are the parameters you'll need to specify for the move command:
- srcFs - a remote name string e.g. "drive:src" for the source
- dstFs - a remote name string e.g. "drive:dst" for the destination
- createEmptySrcDirs - create empty src directories on destination if set
- deleteEmptySrcDirs - delete empty src directories if set
Perform Bidirectional Synchronization Between Two Paths
Perform bidirectional synchronization between two paths with rclone's bisync command. This command synchronizes two directories, ensuring they have the same files and structure.
To use bisync, you'll need to specify two remote directory strings, such as "drive:path1" and "drive:path2". The dryRun option allows you to test the sync without making any changes.
The bisync command also includes options for checking access, resynchronizing, and comparing listings. You can abort the sync if a certain percentage of deleted files exceeds a threshold, or bypass this safety check with the force option.
Here are some key bisync options:
- path1 - a remote directory string e.g. "drive:path1"
- path2 - a remote directory string e.g. "drive:path2"
- dryRun - dry-run mode
- resync - performs the resync run
- checkAccess - abort if RCLONE_TEST files are not found on both filesystems
- maxDelete - abort sync if percentage of deleted files is above this threshold (default: 50)
- force - Bypass maxDelete safety check and run the sync
- createEmptySrcDirs - Sync creation and deletion of empty directories.
- removeEmptyDirs - remove empty directories at the final cleanup step
The bisync command can be used to synchronize two directories, ensuring they have the same files and structure. This can be useful for maintaining identical backups or ensuring consistent data across multiple systems.
File/Directory Information
To get information about a file or directory, you can use the operations/stat command. This command requires three parameters: fs, remote, and opt.
The fs parameter is a remote name string, such as "drive:". The remote parameter is a path within that remote, like "dir". The opt parameter is an optional dictionary of options to control the listing.
If you only want to list files, it's more efficient to set the filesOnly flag in the options.
Space Used
To get an idea of the space used on your remote storage, you can use the operations/about command. This will return the same information as running the rclone about --json command.
You can also use the operations/size command to count the number of files and bytes in a remote directory. This can be useful for understanding how much space is being used up by specific files or directories.
Here are the details you can get from the operations/size command:
- count: the number of files in the specified directory
- bytes: the total number of bytes in those files
For example, if you run operations/size on a remote directory, you might get a result like "count: 100, bytes: 100000". This tells you that there are 100 files in the directory, and they take up a total of 100,000 bytes of space.
Frequently Asked Questions
What is the difference between SFTP and rclone?
SFTP is a secure file transfer protocol, while rclone is a file transfer tool that offers additional features like checksumming and remote command execution, making it a more versatile option
Featured Images: pexels.com