如何打印使用 rsync 更改的文件?

如何打印使用 rsync 更改的文件?

有没有办法让 rsync 打印所有不同文件的完整文件路径而无需实际传输任何文件?

或者,我需要一种方法来仅基于大小变化或最后修改时间在两棵树上(通过 SSH)比较文件之间的差异。

答案1

Rsync 有一个dry-run选项:

-n, --dry-run               show what would have been transferred

我不确定这是否是你想要的。

如果您想要diff跨两棵树的文件,您可以使用 find 和管道以递归方式搜索两个方向,以将输出输出到 ls,并将两者通过管道传输到文件。然后您可以使用diff它们来比较文件。

答案2

我更喜欢使用 --out-format 来查看详细信息,并将其通过管道传输到 less:

rsync -azh --dry-run --delete-after --out-format="[%t]:%o:%f:Last Modified %M" source destination | less

答案3

rsync -rvn localdir targetdir

-n 表示仅显示操作(不执行任何操作)。

请注意,您需要“v”,否则它不会显示任何内容!(其余的答案都忘记了这一点……)

答案4

事实是,如果你运行它rsync -v ...,它会在屏幕上输出一个文件名,该文件正在转移(或者,如果您正在执行 --dry-run,则应该已经转移)。要确定为什么rsync 即将传输它,使用 itemize 模式:https://serverfault.com/a/618740/27813

正如其他人所指出的,默认情况下,rsync 仅根据文件大小和时间戳进行比较,两者必须匹配,否则将对该文件启动“增量复制”。如果您确实想查看哪些文件不同,请使用“-c”校验和模式。

相关内容