rsync:通知任何被跳过的文件

rsync:通知任何被跳过的文件

我正在使用以下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

相关内容