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

Quo*_*ans 9 backup

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

hlo*_*dal 25

rsync的程序正是这么做的。从手册页:

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


Fah*_*tha 8

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

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


And*_*nle 5

如果您以任何方式受到 IO 限制,请使用直接支持增量备份的文件系统,例如 BTRFS 或 ZFS,而无需查找文件中的差异,例如rsync必须执行的操作。

使用rsync会很慢并且非常 IO 密集型。

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

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