如何备份一个大文件且有小改动?

如何备份一个大文件且有小改动?

如果一组文件(每个文件有几GB大)并且每个文件每天都会发生轻微变化(在随机位置,而不仅仅是在末尾附加信息),那么如何有效地复制它?我的意思是,从某种意义上说,仅更新更改的部分,而不更新整个文件。这意味着在这里和那里复制一些 Kb 或一些 GB 之间的差异。

答案1

同步程序正是这样做的。从手册页:

它以其增量传输算法而闻名,该算法通过仅发送源文件与目标中现有文件之间的差异来减少通过网络发送的数据量。 Rsync 广泛用于备份和镜像,并作为日常使用的改进复制命令。

答案2

您可能需要一个现代的重复数据删除备份程序。查看博格备份

这将对大文件的每个版本进行多个备份,但会共享不同版本之间的公共内容,因此大文件的给定版本使用的总空间只会略大于单个版本的总磁盘空间。版本,假设不同版本仅略有不同。

答案3

如果您在任何方面受到 IO 限制,请使用直接支持增量备份的文件系统,例如 BTRFS 或 ZFS,而无需寻找文件中的差异,例如rsync必须做什么。

使用起来rsync会很慢并且非常消耗IO。

因为如果任何应用程序写入文件的更改都受到 IO 限制,则使用rsync将占用应用程序大量的 IO 周期,这就是文件存在的原因。如果您的备份过程或系统受 IO 限制,rsync则会占用可用备份带宽的 IO 周期。

只需谷歌“rsync 很慢”。例如: 将文件从 nfs-share 复制到本地目录时,与 cp 相比,rsync 非常慢(8 到 10 倍)

相关内容