D.M*_*ill 5 backup rsync rdiff-backup rsnapshot
我在数量和总文件大小方面都有大量文件。(我们说的是几 TB)。我想将这些文件/文件夹同步到外部备份系统一次,然后运行每日任务,该任务将根据每日更改重新同步备份。更改并不那么频繁,但有时我们可能会有大约 300GB 的差异(大约 1.5K 文件)。
我一直在考虑将 rsync 或 rdiff-backup 或 rsnapshot 作为一些工具,但我想先用 rsynch 运行一些测试。我遇到了 rsync 的一个主要问题,那就是:
检查现有文件的更改花费的时间太长。我们正在谈论超过 20 小时,这使得每日备份毫无意义。这是使用 rsync -rvhzP 或 -rvhP。即使没有添加/更改/删除文件,它似乎只是扫描所有文件并且需要几个小时。
难道我做错了什么?我提到的任何其他系统(rdiff-backup 或 rsnapshot)的性能会更好吗?我一直假设它们是基于 rsync 的。
提前致谢。
更新额外信息: 我们有大约 2600 个目录和 100k 个文件,总共大约 3.5TB,使用rsync version 3.0.9 protocol version 30. 就每日更改而言,通常每天有 10 个文件更改,但它可以在大约 1.5K 文件更改/添加/删除和大约 300Gb 的容量达到峰值(尽管这些峰值并不那么频繁,并且通常会分散)
假设源文件上的修改时间戳是合法的(并且在修改文件时正在更新),我认为您添加-t参数来同步时间是有意义的。答曰的rsync手册页:
-t , --times
这告诉 rsync 将修改时间与文件一起传输并在远程系统上更新它们。注意,如果不使用该选项,排除未修改文件的优化是无效的;换句话说,缺少 -t 或 -a 将导致下一次传输的行为就像使用 -I 一样,从而导致更新所有文件(尽管 rsync 的增量传输算法将使更新相当有效,如果文件没有实际上改变了,你最好使用-t)。
基本上,您正在失去优化,rsync可以使用文件的修改时间戳作为标记来指示文件已被修改。如果发送方和接收方之间的修改时间戳不一致,则使用增量复制算法并扫描文件内容。正如您所看到的,对于像您所说的那样大的语料库,这将是一个漫长的扫描过程。
如果您的文件的修改时间戳在文件更改时没有更新(出于某种奇怪的原因),那么这将无效,您必须进行完整的文件扫描。如果您需要远程文件的修改时间戳来反映它们何时同步,而不是源文件的修改时间戳,那么这也不是一个可行的解决方案。
不过,我怀疑此选项会从根本上加快您的同步速度。