是否有一个 rsync 替代品,可以存储压缩和加密数据?

是否有一个 rsync 替代品,可以存储压缩和加密数据?

我正在寻找合适的异地备份/文件同步解决方案。本地客户端和远程服务器都运行 Linux。服务器上的存储空间有限,客户端和服务器之间的带宽非常有限。

我查看了 duplicity、Back In Time、Déjà Dup、luckyBackup、rsnapshot、rdiff-backup 和 rsynccrypto。如果我理解正确的话,这些似乎都不能满足我的要求。它们要么存储多个版本,要么每次都进行完全重新传输,要么缺乏加密,要么缺乏压缩。我尝试了 rsync/fusecompress/encfs 组合,但 fusecompress 一直在破坏我的文件。我搜索了 superuser 和 askubuntu,只在这里找到了一个类似的问题(如何进行类似 rsync 的加密备份?),但没有关于压缩的讨论,也没有合适的解决方案。

要求:

  • 简单镜像,仅有一个文件副本(存储空间有限)
  • 仅更新自上次同步以来发生变化的文件(有限带宽)
  • 压缩并加密存储文件
  • 传输之前应在客户端进行加密

基本上,我想要的是类似于 rsync 的东西,但将镜像文件压缩并加密存储。有类似的东西吗?

答案1

如果服务器正在运行 ssh:

  1. 使用以下方式在本地挂载远程站点

    sshfs -o nonempty,sshfs_sync,compression=yes username@host:/path/archives/ /mounted/encrypted/
    
  2. 创建加密系统并挂载它(第一次尝试挂载目录时,encfs 将创建加密文件系统。其工作方式与常规挂载类似):

    encfs /mounted/encrypted /mounted/unencrypted 
    
  3. 使用 rsync 到 /mounted/unencrypted

  4. 卸载加密

    fusermount -u /mounted/unencrypted
    
  5. 最终卸载远程资源

    umount /mounted/encrypted
    

答案2

@Alfred Rupp,

您检查过“Areca Backup”吗?

我认为它满足您的所有要求/需要。

http://areca-backup.org/

2023 年 6 月 14 日编辑

旧帖子,但现在有一个完美的解决方案,可以满足 OP 问题的所有要求。

该计划是 Restic。https://restic.net/

答案3

我认为你所要求的在逻辑上是不可能的,除非你在客户端存储了材料的早期快照,这样就可以在那里构建差异而无需参考服务器。

问题是,如果材料以加密形式存储在服务器上,但加密密钥仅保存在客户端上,那么您必须将内容从服务器传输到客户端才能生成差异,除非客户端为此保留了一份副本。@jet 的答案中的方案将受到这个问题的影响,在这种情况下,rsync 算法不会帮助节省带宽。

您没有说客户端的文件空间受到限制,所以也许您可以将 duplicity 运行到本地文件区域并 rsync 生成的文件?

您可能还想了解 encfs 的加密问题。

相关内容