btrfs 发送的可恢复传输

mca*_*ril 9 backup encryption btrfs

我打算通过将 btrfs 快照发送到在线存储来备份数据。存储作为 LUKS 加密容器文件安装在 cifs 共享上。

以后的传输会相当快,但第一个是 1,3TB,当我使用 tc 为我留下合理数量的上游时,将需要 23 天。现在,理论上,我的连接可以处理,但重新连接是可能的。据我了解,如果我只是使用,这将迫使我重新开始

 btrfs send ... | btrfs receive ...
Run Code Online (Sandbox Code Playgroud)

有没有保存,即可恢复的方法来做到这一点?我找到了 buttersink,但它似乎只允许恢复 S3。

有任何想法吗?

随意使用评论来建议一个完全不同的解决方案。这是一个 Hetzner 存储箱 ( https://www.hetzner.de/de/hosting/storagebox/bx40 )。我有 FTP、FTPS、SFTP、SCP(但不是 SSH 和 paramiko 也不起作用)、Samba/CIFS、HTTPS、WebDAV 访问。存储不信任未加密的数据。两个站点上的可用空间都不过量。将有许多更改的较小文件,因此没有定期完整备份(又需要一个月)的重复性似乎是不可行的。出于同样的原因,在将本地版本与从远程本地安装的版本进行比较时,rsync 很可能会很慢。EncFS 似乎未保存,因为随着时间的推移,另一方可能会收集单个文件的多个版本。

Tom*_*ale 5

btrbk支持:

恢复备份(如果备份目标一段时间内无法访问)

buttersink 支持:

本地 btrfs 文件系统、通过 SSH 的远程 btrfs 文件系统或 S3 存储桶。

或者您可以手动执行此操作:

  1. 不要通过 stdout 写入 shell 管道,而是使用选项-fsend的数据写入文件:
    btrfs send -f outfile
  2. 使用您最喜欢的可恢复传输方法(例如rsync)来传输文件
  3. 用于btrfs receive -f outfile从 outfile 而不是从 stdin 读取数据


roa*_*ima 2

据我了解,您的远程存储作为文件系统公开。btrfs我自己不使用,但我认为快照相当于一个大的“完整备份”文件,后面跟着一些较小的“增量”文件。

在此基础上我仍然会选择,rsync因为它是可重新启动的。rsync除非远程主机上有可用的服务器,否则您不能使用其时髦的增量差异算法,但您可以rsync假设源文件没有更改,并在从它已达到的字节偏移量中断后继续:

test -t 2 && progress=--progress
rsync -av $progress --partial --append --sparse /path/to/source.img /path/to/remote/storage/
Run Code Online (Sandbox Code Playgroud)

如果您可以gzip在传输源文件之前对其进行有用的操作,请这样做。(两者都与本地到本地文件传输--rsyncable无关。)rsync -zrsync

  • 顺便说一句,加密前压缩已经成为 BTRFS 的一项功能。直到现在才明确想到这一点,但记住这一点是件好事:) (2认同)