我怀疑我已经知道这个问题的答案,但我想确认一下。我手动将文件和文件夹从一台虚拟机传输到另一台虚拟机,因为当时我还没有正确理解 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
仅更新,即不触及目标系统上较新的文件。