简单聊聊我的私人数据的异地容灾备份
今天这篇文章简单聊一聊我最近做的私人数据异地数据灾难备份方案。
我家里的树莓派挂载了一个大容量的硬盘(4T),用来备份我手机和电脑上的重要数据(隐私性较高),不定期手动 rsync 一下。 手机上主要是相册数据,十年前的相片都还在的,不知道重要不重要,懒得看了,但是没必要清理掉,毕竟占用空间也不大。加上我也挺怀旧的。 电脑上主要是代码之类,不是所有的代码都存放在 github 仓库,一些数据库啥的也没有。所以备份是有必要的。
由于树莓派就在我房间,其实这样说来算不上异地灾备。所以我一直在找一个简单易用易部署的方案来做真正的异地容灾备份。 有几点条件一定要满足:
-
数据传输安全;
这个很简单,基本的 HTTPS 或 SSH 或 VPN 即可满足。
-
数据存放安全;
让我明文保存如此隐私的数据是不可能的。一定得加密。
加密的话,可以把所有数据打包归档后加密,然后存放。但是这样有一个问题,就是更新加密的文件比较麻烦。 毕竟小文件比较多,最终打包的归档文件可能非常大,而且还是加密的归档文件,不友好。 也可以对每个文件分别加密(也包括文件名和目录名),这样的话,部分文件的更新操作就非常容易。
-
增量同步简单;
我可不想每次要同步的时候都要执行一大堆复杂的操作(比如:打包、加密、全量传输之类),这样心智负担太重了,不实用。 所以需要像是做到 rsync 那样的增量同步是最好的。可惜 rsync 不支持加密,把数据同步到家里的树莓派的时候用的 rsync,但是异地灾备的话就不可行了。
基于以上几点考究,我目前试用的方案如下:
- 用 WireGuard 建立了一个 VPN 连上了同事的家里机器,这是为了数据传输的安全。当然,直接 HTTPS / SSH 也行;
- 对于数据存放安全和数据增量传输,我选择了 rclone。它支持 sync 一键同步目录到远程(sftp),还可以加个中间加密(crypt)层。完美满足我的需求。
Rclone 的使用非常简单,使用 rclone config
配置一个 ssh 登录帐号,配置一个 crypt 加密中间层即可一键 sync。
Rclone 的加密和解密是在本地做的(即传输前),增量传输的判定是通过文件大小和修改时间。因此,如果文件大小或修改时间有变化,
则这整个文件会全部重新传输,这一点来看,必定是没有 rsync 高效的。有兴趣的可以查看 rsync 的相关文献和论文。
现在我已经同步了 100+G 的数据到我同事的机器上,白嫖他的机器,哈哈哈哈。目前一切良好,如果有什么问题,我会同步到文章。 如果大家有类似的需求,可以一起聊聊。