Rclone: Difference between revisions

No edit summary
 
(22 intermediate revisions by the same user not shown)
Line 1: Line 1:
rclone<br>
rclone is a super useful tool for copying files to cloud storage such as Google Drive or S3-based object stores.
rsync for cloud storage<br>
[https://rclone.org/ https://rclone.org/]<br>
[https://rclone.org/ https://rclone.org/]<br>
Rclone is often faster than the built in file explorer due to handling multiple transfers (e.g. <code>--transfers 25</code>).


==Install==
==Install==
You can download a deb or rpm from their website.<br>
See https://rclone.org/install/<br>
Or you can run the following script
For Linux, you can download a deb or rpm from their website.<br>
<pre>
If you do not have sudo, you can download the binary and put it in your <code>$HOME/.local/bin</code> folder.
curl https://rclone.org/install.sh | sudo bash
</pre>
If you do not have sudo, you can download the binary and put it in your <code>~/bin</code> folder.


For Windows, rclone is also [https://chocolatey.org/packages/rclone available on Chocolatey]
For Windows, rclone is also [https://chocolatey.org/packages/rclone available on Chocolatey] and WinGET
<pre>
<pre>
choco install rclone
choco install rclone winfsp -y
</pre>
</pre>
* <code>winfsp</code> is needed for <code>rclone mount</code>


==Usage==
==Usage==
===Setup Services===
===Setup Backends===
<pre>
<pre>
rclone config
rclone config
</pre>
</pre>
;Note
* Backends and their configuration options are stored in your config file.
** <code>$HOME/.config/rclone/rclone.conf</code>


===Common Flags===
===Common Flags===
[https://rclone.org/flags/ flags]
[https://rclone.org/flags/ flags]
* <code>-n, --dry-run</code>
* <code>-P, --progress</code> show progress (transferred, ETA, elapsed)
* <code>-P, --progress</code> show progress (transferred, ETA, elapsed)
* <code>-n, --dry-run</code>
* <code>--stats-one-line</code> show only the total stats
* <code>--transfers N</code> do N simultaneous file transfers (defaults to 4)
* <code>--checkers N</code> (defaults to 8)


===Mount===
===Mount===
Line 31: Line 37:
<pre>
<pre>
mkdir /path/to/local/mount
mkdir /path/to/local/mount
rclone mount remote:path/to/files /path/to/local/mount
rclone mount remote:path/to/files /path/to/local/mount [flags]
</pre>
</pre>


;Unmount
;Unmount
* <code>fusermount -u /path/to/local/mount</code>
* <code>fusermount -u /path/to/local/mount</code>
;Notes
* I strongly recommend using some kind of cache by setting the vfs cache mode or using a cache backend.
** Just append <code>--vfs-cache-mode full</code> to the end of your mount.
**: The default cache is at <code>~/.cache/rclone/</code>.
** See [https://rclone.org/commands/rclone_mount/#vfs-file-caching vfs file caching] for more options.
* If you have unlimited data or are using a local mount, you may want to reduce the directory index cache time.
** The default is <code>--dir-cache-time 5m0s</code> for 5 minutes.
**: I usually set 15 seconds for local SFTP mounts.
;Example
Windows:
<pre>
rclone mount t440s-server-local: H: --vfs-cache-mode full --dir-cache-time 5m0s
</pre>


===Sync===
===Sync===
Line 72: Line 93:


Crypt creates fake remotes (Crypt remotes) which represent decrypted versions of paths in real remotes (e.g. Google Drive).
Crypt creates fake remotes (Crypt remotes) which represent decrypted versions of paths in real remotes (e.g. Google Drive).
==Mount on Startup==
You can mount on startup using a systemd service:
<pre>
# ~/.config/systemd/user/terpmail.service
[Unit]
Description=rclone terpmail
[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/rclone mount terpmail: ${HOME}/terpmail --vfs-cache-mode full
ExecStop=/bin/fusermount -u ${HOME}/terpmail
[Install]
WantedBy=default.target
</pre>
Then run:
<pre>
mkdir ${HOME}/terpmail
systemctl --user daemon-reload
systemctl --user enable terpmail
systemctl --user start terpmail
</pre>
On Windows, you can create a service using nssm:
# Install <code>nssm</code>
#:<pre>choco install nssm -y</pre>
# Create a service
#:<pre>nssm install my_service</pre>
;Notes
* If using nssm, you will need to specify the full path to the config since it runs as another user.