我正在使用以下rsync
命令,其中包含“更新”选项,这意味着它将跳过接收器上较新的文件。它有效,除了我需要它告诉我被跳过的文件因为它们在接收器上是较新的。
rsync -ahHX --delete --itemize-changes --stats --update /path/to/source/ --exclude=/dir1/ --exclude=/dir2/ --exclude=/dir3/ /path/to/receiver/
我已经查看了手册页,但没有看到这样的选项。我希望我只是错过了它或者不明白一些事情。
如果 rsync 不能做到这一点,我还可以使用哪些其他工具?我尝试过diff -rqw /path/to/source/ /path/to/receiver/
,但这需要太长时间。它所做的超出了我的需要。
文件总大小为 24.60 GB,共 71,835 个文件。
答案1
我希望有更好的解决方案,但这就是我想出的:
首先,以与复制操作相反的方向运行此检查:
rsync --dry-run -ahvP --itemize-changes --stats /path/to/receiver/ /path/to/source/
这会告诉我接收器上哪些文件较新(因此将被我的 rsync 命令跳过)。我可以手动处理这些文件,然后运行原来的 rsync 命令:
rsync -ahHX --delete --itemize-changes --stats --update /path/to/source/ --exclude=/dir1/ --exclude=/dir2/ --exclude=/dir3/ /path/to/receiver/
这实现了我的目标,但它涉及等待 rsync 使文件列表两次。每次大约需要15秒。如果没有更好的解决方案,我可以忍受。
答案2
您可以添加两个级别的详细信息。
$ rsync -a --update -vv a/ b/
sending incremental file list
delta-transmission disabled for local transfer or --whole-file
1 is uptodate
2 is uptodate
3 is newer
4 is uptodate
5 is newer
total: matches=0 hash_hits=0 false_alarms=0 data=0