This page looks best with JavaScript enabled

如何让数据增量同步到云盘并保持加密

 ·  ☕ 2 min read  ·  ✍️ 鱼子盖饭 · 👀... views

上一篇文章 中部署了系统的快照计划,但考虑到硬盘会坏会掉,以及可移动性,因此将快照文件在云端也保存一份也是非常有必要的 (除了初始快照,后面的快照不变的部分都是使用的硬链接,也就是与初始快照共享一个磁盘区块,因此上传到云端的时候即使是只有几十 MB 的增量快照,也会跟随链接上传原始文件,即全盘快照)

Rclone 用于命令行操作云盘,支持的云盘很多,操作也比较方便,它的 sync 操作是增量的,也即每次只传输 DST 与 SRC 不同的部分并删除多余的文件与目录与 SRC 保持一致

一些需要保密的数据,明文放在云盘上不太放心,Rclone 有一个很少提及的 Crypt 功能

  1. 首先通过 rclone config 连接一个云盘

  2. 然后再次进入 rclone config ,再次选择新建远程云盘的选项,这次我们将这个网盘命名为 secret

  3. 在选择云盘名称时,列表中有个 Encrypt/Decrypt a remote 的选项,短名称即 crypt,输入序号或 “crypt”

  4. 根据提示输入需要加密的路径:example:path,这里的 example 是第一步中连接的云盘的别名,path 即这个云盘中一个用于存放加密文件的目录,sync 操作会使这个目录与源目录保持一致,也即该目录中的其它文件会被删除

  5. 后面是一些是否加密文件名,以及创建密码的选项

  6. 由于 Rclone 的配置文件是将各个云盘的认证信息,包括 Crypt 的密码明文存放的,因此建议通过 rclone configSet configuration password 选项配置密码将文件加密,但也意味着每次进行 Rclone 操作时都会输入一次改密码,又要在效率和安全之间取舍了。。。

之后执行同步命令即可:

1
sudo rclone sync /path/to/your/dir secret:
  • secret: 即在配置 crypt 时的路径

现在看看云盘中,目录和文件是加密的:

dir.jpg

files.jpg

而本地用 Rclone 列出则是明文的:

rclone.jpg

遇到的一个小坑

跟 Rclone 没关系,sudo 的环境变量问题

在同步包含 root 权限的文件时,需要用 sudo 执行,这时 Rclone 会去 /root/.config/rclone 中找配置文件,需要用 --config /path/to/your/rclone.conf 指定 home 中的配置文件

使用 sudo 是用 root 用户执行命令,但环境变量是没有同步到 root 的,也就是 root 执行的命令并没有 http_proxy 等环境变量。。难怪 Rclone 一直卡着不动,以为这个功能有问题。。

要让 sudo 使用当前命令行代理,编辑 /etc/sudoers,加入下面这行

1
Defaults env_keep = "http_proxy https_proxy ftp_proxy no_proxy"

鱼子盖饭
WRITTEN BY
鱼子盖饭
Get into trouble, make mistakes.


What's on this Page