使用 rsync 确保两个目录具有完全相同的文件

使用 rsync 确保两个目录具有完全相同的文件

我想将一个非常大的目录(数 TB 的数 GB 文件)克隆到另一个驱动器上的另一个目录。我一直在使用这个命令:

ionice -c 3 rsync -avz /path/to/sourcedir/ /path/to/destdir/

这个过程需要一天多的时间,而且经常会中断,因此使用rsync可以恢复,而无需从零开始。理论上,上述命令是幂等的,所以当任何命令失败时,我应该能够重新发出相同的命令,让它找出中断的位置并从那里继续。

现在,因为操作的目的是退出并回收源驱动器,所以在执行此操作之前,我希望非常确定所有文件都已正确复制。所以我使用了这个问题逐字节比较每个文件。果然,有许多文件的哈希值不同。

因此理论问题是:rsync与我认为我理解的不同,是否仅仅对文件名起作用,而不是内容,或者至少是长度?

还有(更重要的)实践问题:我可以使用其他选项来强制rsync生成源目录的精确克隆吗?特别是,在rsync启动时,当目标目录中已经有一个与源目录中的文件同名但内容不同的文件时,我希望命令确保它被替换(或“完成”)为源目录中的实际原始文件。

答案1

是的,你可以让它rsync看起来进入检查文件是否全部匹配。从man rsync

    -c, --checksum              skip based on checksum, not mod-time & size

当然会很慢,但rsync应该可以发现正常检查无法发现的差异。

但 rsyncing 不是克隆。如果你想要克隆副本,请使用克隆兹拉

相关内容