btrfs send 的可恢复传输

btrfs send 的可恢复传输

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

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

 btrfs send ... | btrfs receive ...

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

有任何想法吗?

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

答案1

btrbk支持:

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

buttersink 支持:

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

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

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

答案2

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

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

test -t 2 && progress=--progress
rsync -av $progress --partial --append --sparse /path/to/source.img /path/to/remote/storage/

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

相关内容