为什么手动复制文件后rsync还会复制文件?

为什么手动复制文件后rsync还会复制文件?

我使用 bash 将许多文件夹中的许多文件(约 54GB)从一个 ext4 位置复制到另一个位置cp ~/1 ~/2 -d -r -v -i。然后我想检查所有文件是否都已正确复制,因此我运行了rsync --delete -vturOn ~/1 ~/2,但 rsync 想要复制所有文件。这是为什么?

PS:我本来想用cpwith -a,但是用-d错了。

编辑:答案这里让我使用--itemize-changes显示>f..t......所有文件的标志。手册页指出t平均修改时间不同,文件类型为文件 ( f),并且仅项目属性正在被修改 ( .)。这是正确的吗?那么所有将要改变的都是修改时间吗?

编辑:我运行了rsync(没有-n),尽管t修改时间不同,它还是继续再次复制所有文件(实际文件内容),这是出乎意料的,因为 rsync 无论如何都应该进行差异复制,这应该注意吗?

编辑:停止同步并在没有-t参数的情况下重新运行。现在逐项更改显示“T”而不是t。如果我希望将来对这些文件使用 rsync,似乎我必须通过 rsync 复制所有文件至少一次。

编辑:我删除了目标文件并使用带-van参数的 rsync 再次复制了所有内容。

答案1

来自 rsync 文档:

Rsync 使用“快速检查”算法(默认)查找需要传输的文件,该算法查找大小或上次修改时间已发生变化的文件。

此外,当源和目标都是本地时,默认rsync使用该选项运行。--whole-file

-W, --whole-file

使用此选项时,不使用 rsync 的增量传输算法,而是按原样发送整个文件。当源计算机和目标计算机之间的带宽高于磁盘带宽时(尤其是当“磁盘”实际上是网络文件系统时),如果使用此选项,传输可能会更快。当源计算机和目标计算机都指定为本地路径时,这是默认设置,但前提是没有批量写入选项生效。

我不确定,但听起来你可能想要这个--checksum选项。

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

请注意,这需要从磁盘读取源文件和目标文件来计算校验和。

更多内容:

https://superuser.com/a/118984/219809

https://serverfault.com/a/279346

相关内容