小智 48
Rsync 有一个dry-run
选项:
-n, --dry-run show what would have been transferred
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是您想要的。
如果你想要diff
跨越两棵树的文件,你可以使用 find 和 pipe 递归搜索两个方向以输出到 ls 并通过管道将两者都输出到一个文件。然后,您可以diff
用来比较文件。
kab*_*bZX 18
我更喜欢使用 --out-format 来查看详细信息,将其减少到更少:
rsync -azh --dry-run --delete-after --out-format="[%t]:%o:%f:Last Modified %M" source destination | less
Run Code Online (Sandbox Code Playgroud)
小智 12
rsync -rvn localdir targetdir
-n 表示仅显示操作(不执行任何操作)。
请注意,您需要“v”,否则它不会显示任何内容!(其余的答案忘记了这一点......)
建立在其他答案和https://serverfault.com/a/618740/114520 的基础上
--dry-run
(或-n
) 来避免修改--itemize-changes
(或-i
) 查找更改--archive
(或-a
) 获取所有子目录egrep
过滤掉以点开头的条目(无变化)这给你:rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^\."
如果您只想要一种方式,您可以更改命令:
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^(\.|<)"
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^(\.|>)"
如果您只需要文件,只需添加awk
魔法:rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^\." | awk '{print $2}'
事实是,如果您运行rsync -v ...
并且它在屏幕上输出一个文件名,则该文件正在被传输(或者如果您正在执行 --dry-run,则该文件已经被传输)。要确定rsync为何要传输它,请使用 itemize 模式: https: //serverfault.com/a/618740/27813
正如其他人所指出的,默认情况下,rsync 仅根据文件大小和时间戳进行比较,两者都必须匹配,否则会在该文件上启动“增量副本”。如果您确实想查看哪些文件不同,请使用“-c”校验和模式。
归档时间: |
|
查看次数: |
68850 次 |
最近记录: |