Rclone 是一个非常实用且好用的命令行工具,能方便我们对文件进行管理,不管这个文件是位于本地还是网盘上……

Rclone 也是我今天在备份网站时发现的,这个工具能做的事情很多,比如将你的网盘挂载为本地磁盘使用,比如在你的网盘和本地目录之间进行同步,初听感觉没什么大不了的?那么如果我说,它支持的网盘超过 40 个,甚至能在网盘与网盘之间进行同步呢?具体举例:把谷歌网盘挂载到本地使用,在谷歌网盘和你的 OneDrive 网盘上进行文件同步(不需要本地再存一份哦),以及同步你本地的文件夹到它支持的网盘中并将文件进行加密保存……所有的这些,只要用 Rclone 就能做到,而且像同步这类的操作,是可以在它所有支持的网盘上任意组合使用的。

PS:没想到小白的我竟然会有来安利 Linux 用工具的一天2333333

Rclone 简单介绍

这里先引用下中文维基百科的一段话来介绍下 Rclone:

Rclone 是一个开源、多线程、命令行界面的计算机程序,可用于管理云存储。其功能包括档案同步、文件传输、加密、缓存和挂载。Rclone 共支持包括 Amazon S3 和 Google 云端硬盘在内的五十多种云存储服务。

中文维基百科“Rclone”词条:https://zh.wikipedia.org/wiki/Rclone

这个工具其实能干的事情很多,我自己最喜欢的就是拿它同步多个网盘之间的内容,还有加密文件备份存储到网盘上了。如果上面这些还不足以让你了解它的功能,那么我再列举几个使用方面的例子吧:

  1. 将本地某个文件夹和某个网盘如谷歌网盘相连,将本地文件夹中的文件加密备份到谷歌网盘上,且保持本地文件和网盘文件的同步
  2. 将你的亚马逊 S3 存储桶挂载到本地当作本地磁盘来使用
  3. 将你另外两台服务器上的某个文件夹进行同步备份(通过 FTP 或者 SFTP),且不需要在安装 Rclone 实际操作的这台服务器上保存文件
  4. 将你存放在谷歌网盘上的某个文件夹和本地的某个文件夹进行同步
  5. 在本地两个文件夹上进行同步

上面这些例子,如果单说某一项都还比较轻松,但 Rclone 好就好在它一个工具就可以全部做到,我给大家贴一下 Rclone 官网的支持列表,这是现在它支持的所有服务商家和协议:https://rclone.org/#providers

上面说的这些支持的商家或者协议,我前面也有提到过,他们是可以任意组合来使用的,比如说你可以在某个 WebDAV 协议的网盘和某个使用 SFTP 协议的服务器之间进行文件同步/备份,反过来也没问题,这就是 Rclone 的强大之处了。

Rclone 简单使用

说的再多,不如实际给大家演示一下,下面我就简单说下我是怎么将我的某个本地文件夹加密同步到 Wasabi 上的吧,中间会涉及到 Rclone 同步命令,本地配置的生成,远端配置的生成以及远端加密配置的生成。之所以把这个拿出来说,是因为我觉得这个最具有代表性,且涵盖到的功能也比较多,能够让大家更多的了解到 Rclone。

首先当然是安装 Rclone 了,话说 Rclone 支持的平台其实挺多的,包括 MacOS 和 Windwos 也是支持的,但是我自己只在 Linux 上实际使用过,所以这里就仅针对 Linux 进行推荐和使用演示了,希望大家理解。

安装的话在终端输入下面的命令就能安装好了,过程是自动的:

curl https://rclone.org/install.sh | sudo bash

上面这条命令是下载官方的脚本进行稳定版 Rclone 的自动化安装,在 Linux/macOS/BSD 三个平台上都可以使用,因为脚本内部会自动判断平台并进行对应版本的安装,另外如果日后要更新升级 Rclone 的话也可以使用这个命令。

安装完成之后,我们在终端属于 rclone 就可以看到这个工具的一些命令介绍了,因为我这次主要是演示同步,所以就不介绍太多了,直接输入下面的命令先来创建好要同步的本地和远端的配置吧!

rclone config

输入之后,你可能会看到下面的这种提示:

No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q>

这就是 Rclone 的 Config 命令具体的操作提示了,输入 n 之后会开始创建配置(包括本地的和远端的都可以生成),按 s 是给我们的 Rclone 配置文件设置密码,如果设置了密码,每次 Rclone 运行同步之类的都需要输入密码先解密配置文件,我个人觉得比较麻烦,所以这里就不设置了,按 q 确定就是退出配置界面。

生成配置这个大家注意一下,虽然配置文件是保存在本地的我们可以直接编辑,但是因为中间会涉及到对密码等字段的加密,所以不建议大家直接编辑 Rclone 的配置文件,而是通过 rclone config 命令来创建和编辑配置文件(当有创建配置时,上面的命令会多一项是修改配置的)。

不多说了,这里我就直接按 n 确定来创建配置了,首先我以创建本地的配置为例,中间可能会遇到的命令及具体的意思都在下面的代码里解释:

// 配置名称,随意,自己记得就行
name> local
// 要创建的配置存储类型,看提示上面的列表,有很多,自己是哪个就选择哪个输入,比如我是本地配置,就是 local
Storage> local
// 是否关闭长路径转换,Windows 系统下可能比较有用,这里默认就行了,直接留空回车
nounc>
// 询问是否编辑高级配置项,一般是没必要的,因为演示所以我也不想细说,直接回车或者输入 n 回车跳过
Edit advanced config? (y/n)

创建本地配置比较简单,到这里就差不多了,上面的确认之后 Rclone 会显示出来你刚才创建的本地配置的一些信息,确认一下如果没问题直接回车或者输入 y 确认就行了。确认之后,你会回到 rclone config 这个初始命令处,你会发现上面列表里会显示出来你刚才创建的配置名称和配置类型。

然后还是跟上面的差不多,来创建 Wasabi 这个远端的配置吧!继续输入 n 创建新配置,解释还是一条条给大家说。

// 配置名称,随意,自己记得就行
name> wasabi
// 跟上面的本地配置一样,选择存储类型,因为 wasabi 属于 S3 兼容协议的产品,所以这里选择 s3
Storage> s3
// Rclone 支持的 S3 兼容协议产品列表,可以看到有 wasabi,也就是我们要选的
provider> wasabi
// 似乎是给亚马逊家产品验证用的,咱没用过不清楚,直接用默认的设置,留空回车
env_auth>
// S3 产品的 Key ID,懂得都懂
access_key_id>
// S3 产品的 Key,懂得都懂+1
secret_access_key>
// S3 产品存储桶相关的信息,懂得都懂+2
region>
// S3 产品存储桶相关的信息,懂得都懂+3
endpoint>
……
// 后面这部分就略过了,主要是 S3 需要填写的一些信息,不通用,最后高级配置和上面的一样没问题直接回车或者 n 跳过

创建远端配置方面其实和本地的差不多,主要是设置一些远端的验证信息之类的,确保 Rclone 这边后续能自动连接上,所以我也就不细说了,创建好之后还是会回到初始的 rclone config 命令这里,可以看到刚刚创建的远端配置也显示了。

最后一个远端配置是加密远端,这一步比较重要,不能出错,所以有这方面需求的请务必仔细看,不过在开始之前我先给大家简单解释一下这个机密远端是怎么工作的,实际就是这么回事:本地文件→加密远端→远端 也就是说这个加密远端本身不是用来存放文件的,而是作为一个双方的中转,来加密解密文件用的,所以在配置方面会略有不同。加密远端的配置信息及解释如下:

// 加密远端的名字,我这里为了区分和理解,就写 wasabicrypt 了
name> wasabicrypt
// 存储类型,这里注意一定要选择 crypt
Storage> crypt
// 实际远端存放文件的路径,格式是远端名称:路径,比如我写的同步文件要放在 wasabi 远端的 /home 目录下(只是举例)
remote> wasabi:/home
// 是否加密文件名,加密之后无法直接从外面看出来存放的是什么文件,建议保持默认回车或者选择 standard 加密
filename_encryption> standard
// 是否加密文件夹名,和上面一样建议保持默认回车或者输入 true 确定开启
directory_name_encryption> true
// 询问你是用自己的密码来加密还是让程序随机生成密码加密,这里输入 y 用自己的
Password or pass phrase for encryption.
// 输入加密密码,要输入两遍,输入过程中密码不会显示出来
password:
// 设置加密盐,可以留空/用自己的密码(和上面加密用的不同)/程序随机生成,这里我选择 y 用自己的
Password or pass phrase for salt. Optional but recommended.
Should be different to the previous password.
// 然后就又是输入两遍密码确认了,这里输入的就是上面说的加密盐密码,不是前面的文件加密密码
password:
……
// 之后就是高级设置之类的了,可以随自己喜欢看,我这里就跳过了

上面这个就是加密远端的配置了,中间最重要的部分就是设置实际存放文件的远端这里了,我写的是 wasabi:/home,记得根据自己的实际情况进行更改。这里还有个特别需要注意的地方,就是后面同步文件时会有个输入同步到加密远端哪里的问题,因为我们在机密远端里已经设置了实际远端的文件存放路径,所以在后面写存放路径的时候务必注意不要再写一遍了。

如果不明白我举个例子,比如上面我写的加密远端,文件存放在 wasabi:/home 这个远端的目录下,那么后面同步时,如果你再指定一遍目录 rclone sync local:/home wasabicrypt:/home,那么实际存放在远端的路径就变成了 wasabi:/home/home 了,如果怕出现这种问题的话,可以直接在上面的加密远端配置里,将远端路径设置成 wasabi: 这样指定根目录,然后再在同步命令里写具体的路径(PS:为了方便理解,后面的同步命令默认设置的就是 wasabi: 这种)。

好了上面我们基本就创建好了需要的三个配置了,分别是本地的配置,远端加密配置(中转站,加密解密文件用),远端配置,之后的事情就简单了,就是同步,具体的命令如下:

rclone sync local:/home wasabicrypt:/home

这里给大家分别解释一下,开头的 rclone sync 就不说了,就是使用 rclone 同步功能的意思,后面的 local:/home 和 wasabicrypt:/home 分别对应的是本地的/home 文件夹和远端的 /home 文件夹,也就是将本地和远端这两个文件夹同步的意思。注意,各位在写同步命令的时候务必注意先后顺序,因为据我所知同步是单向的,是后者与前者保持同步。

关于同步目录的写法,local:/home 这种 local 部分指的是前面创建配置时写的配置名称,对应的就是某个存储,如果写成 local: 这种不带具体路径的,就是全部的意思,而如果后面写成 wasabicrypt:,就是说将同步的文件放在 wasabicrypt 关联的实际远端根目录下。

最基本的用法就说这么多了,上面这个就是一条完整的同步命令,不过只是一次性运行的,如果要做到自动同步的话,还需要借助 Crontab 计划任务之类的东西,这里就不啰嗦了。

最后在演示部分再说几个比较实用的附加参数,供大家参考:

rclone sync local:/home wasabicrypt:/home --exclude /download/** --transfers 10 --checksum --max-age 1M

一个一个的解释一下:

  • –exclude /download/**:同步时排除 /home/download 目录及其子目录
  • –transfers 16:并行运行的文件传输数量,默认是 4 个,设置大了占用的内存会增加,内存不足容易导致同步失败
  • –checksum:同步时使用文件校验和和大小来进行文件的对比分析(决定是否需要同步/覆盖),不设置默认是通过文件的修改时间和大小进行判断,据官网所说,在 S3 这种支持的存储类型上设置这个比默认的同步速度更快
  • –max-age 8d:仅传输 1 个月以内的文件

这几个参数是我平常用的比较多了,当然 Rclone 还有很多其它的参数,因为篇幅关系我就不一一细说了,大家可以去看官方的文档资料。

软件信息

软件名称:Rclone

开发者:Nick Craig-Wood

支持平台:Windows/MacOS/Linux/FreeBSD/NetBSD/OpenBSD/Plan9/Solaris

当前版本:v1.54.1

支持语言:英文

开源协议:MIT

官网:https://rclone.org/

开源地址:https://github.com/rclone/rclone

个人备份(版本:v1.54.1,备份于:20210319):

这次就只备份源码了,主要是支持的平台太多了,文件列表有点长……

PS:Rclone 看官网的说明还有一个 GUI 界面来着?咱没有试过,感兴趣的可以看看官网文档是怎么配置使用的。

PS1:本文特色图片来自于网上,出处:https://www.reddit.com/r/commandline/comments/9e0cy6/rclone_remote_path_autocompletion_on_linux_google/

说点什么
欢迎评论!不想写邮箱的请填写 [email protected] 哦!
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...