我正在寻找合适的异地备份/文件同步解决方案。本地客户端和远程服务器都运行 Linux。服务器上的存储空间有限,客户端和服务器之间的带宽非常有限。
我查看了 duplicity、Back In Time、Déjà Dup、luckyBackup、rsnapshot、rdiff-backup 和 rsynccrypto。如果我理解正确的话,这些似乎都不能满足我的要求。它们要么存储多个版本,要么每次都进行完全重新传输,要么缺乏加密,要么缺乏压缩。我尝试了 rsync/fusecompress/encfs 组合,但 fusecompress 一直在破坏我的文件。我搜索了 superuser 和 askubuntu,只在这里找到了一个类似的问题(如何进行类似 rsync 的加密备份?),但没有关于压缩的讨论,也没有合适的解决方案。
要求:
- 简单镜像,仅有一个文件副本(存储空间有限)
- 仅更新自上次同步以来发生变化的文件(有限带宽)
- 压缩并加密存储文件
- 传输之前应在客户端进行加密
基本上,我想要的是类似于 rsync 的东西,但将镜像文件压缩并加密存储。有类似的东西吗?
答案1
如果服务器正在运行 ssh:
使用以下方式在本地挂载远程站点
sshfs -o nonempty,sshfs_sync,compression=yes username@host:/path/archives/ /mounted/encrypted/
创建加密系统并挂载它(第一次尝试挂载目录时,encfs 将创建加密文件系统。其工作方式与常规挂载类似):
encfs /mounted/encrypted /mounted/unencrypted
使用 rsync 到 /mounted/unencrypted
卸载加密
fusermount -u /mounted/unencrypted
最终卸载远程资源
umount /mounted/encrypted
答案2
@Alfred Rupp,
您检查过“Areca Backup”吗?
我认为它满足您的所有要求/需要。
2023 年 6 月 14 日编辑
旧帖子,但现在有一个完美的解决方案,可以满足 OP 问题的所有要求。
该计划是 Restic。https://restic.net/
答案3
我认为你所要求的在逻辑上是不可能的,除非你在客户端存储了材料的早期快照,这样就可以在那里构建差异而无需参考服务器。
问题是,如果材料以加密形式存储在服务器上,但加密密钥仅保存在客户端上,那么您必须将内容从服务器传输到客户端才能生成差异,除非客户端为此保留了一份副本。@jet 的答案中的方案将受到这个问题的影响,在这种情况下,rsync 算法不会帮助节省带宽。
您没有说客户端的文件空间受到限制,所以也许您可以将 duplicity 运行到本地文件区域并 rsync 生成的文件?
您可能还想了解 encfs 的加密问题。