当rsync打印出它为每个文件做的详细信息时(使用其中一个详细标志),它似乎包括已更新的文件和未更新的文件。例如,使用-v
标志的输出片段如下所示:
rforms.php is uptodate
robots.txt is uptodate
sorry.html
thankyou.html is uptodate
我只对更新的文件感兴趣。在上面的情况下是sorry.html
。它还会在输入目录名时打印出目录名,即使该目录中没有更新的文件也是如此。有没有办法过滤掉这个输出中没有更新文件的uptodate文件和目录?
答案 0 :(得分:5)
Rsync的输出可以进行广泛的自定义,看看rsync --info=help
; -v
是从现代rsync获取信息的一种相当粗略的方法。
在您的情况下,我不确定您认为“更新”的确切含义。例如,在接收器上也删除了?只有文件/目录,还有管道和符号链接?修改/访问时间或仅内容?
作为一个简单的测试,我建议你看一下:rsync --info=name1 <other opts>
。
答案 1 :(得分:4)
你可以通过grep:
来管道rsync -vv (your other rsync options here) | grep -v 'uptodate'
答案 2 :(得分:2)
这是我的看法......(经过工作证明并对此非常满意。)
rsync -arzihv --stats --progress \
/media/frank/foo/ \
/mnt/backup_drive/ | grep -E '^[^.]|^$'
重要的一点是itemize的-i
。
grep允许所有输出行传递(也是-h --stats
中的任何摘要,在此之前也是空的,这有利于清晰度)除了那些开头一个点:这些是describe unchanged files:
A . means that the item is not being updated (though it
might have attributes that are being modified).