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

st0*_*t01 3 command-line rsync

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

ionice -c 3 rsync -avz /path/to/sourcedir/ /path/to/destdir/
Run Code Online (Sandbox Code Playgroud)

该过程需要一天多的时间并且经常被中断,因此使用rsync能够在不从零重新启动的情况下恢复。理论上应该是上述命令是幂等的,所以当任何事情失败时,我应该能够重新发出相同的命令,让它在中断的地方工作并从那里继续。

现在,因为操作的重点是报废和回收源驱动器,所以在此之前我想确保所有文件都已正确复制。所以我使用这个问题中的方法逐字节比较每个文件。果然,有许多文件具有不同的哈希值。

所以理论问题:rsync与我认为我理解的不同,它是否仅适用于文件名,而不是内容,或者至少是长度?

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

sud*_*dus 7

是的,你可以rsync的文件来检查一切比赛。从man rsync

    -c, --checksum              skip based on checksum, not mod-time & size
Run Code Online (Sandbox Code Playgroud)

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

但是 rsyncing 不是克隆。如果您想要克隆副本,请使用Clonezilla