手动传输的文件的指纹是否不同 - 所以 rsync 无法将它们识别为相同的文件?

手动传输的文件的指纹是否不同 - 所以 rsync 无法将它们识别为相同的文件?

我怀疑我已经知道这个问题的答案,但我想确认一下。我手动将文件和文件夹从一台虚拟机传输到另一台虚拟机,因为当时我还没有正确理解 rsync。现在,当我通过运行将旧虚拟机(例如)上的文件夹中的文件[email protected]:/home/myoldfolder与新虚拟机(例如)上完全相同(手动传输)的文件进行比较时[email protected]:/home/mynewfolder

rsync -a -v -c --dry-run [email protected]:/home/myoldfolder /home/mynewfolder

rsync 在增量文件列表中显示相同的文件。

相反,当我使用 rsync 将相同的文件同步到新虚拟机上的另一个新文件夹,然后重复比较时,增量文件列表中没有显示任何文件,大概是因为 rysnc 将它们识别为完全相同的文件。

这是因为如果文件未使用 rsync 同步,文件指纹会发生变化吗?我希望我的问题很清楚。

谢谢!

答案1

为了识别文件中的更改,rsync依赖于

  • 文件存在(传输目标上不存在的文件)
  • 尺寸
  • 修改时间

如果其中任何一个不匹配,则传输将完成。现在,如果您“手动”复制,具体而言,目标系统上可能不会维护修改时间。

您可以-c在 rsync 中使用 例如 来强制基于校验和的比较(由于每个文件在任一侧都进行校验和,所以速度很慢),--size-only跳过修改时间测试,或者-u仅更新,即不触及目标系统上较新的文件。

相关内容