让rsync仅报告已更新的文件

时间:2009-12-15 05:12:46

标签: rsync

当rsync打印出它为每个文件做的详细信息时(使用其中一个详细标志),它似乎包括已更新的文件和未更新的文件。例如,使用-v标志的输出片段如下所示:

rforms.php is uptodate
robots.txt is uptodate
sorry.html
thankyou.html is uptodate

我只对更新的文件感兴趣。在上面的情况下是sorry.html。它还会在输入目录名时打印出目录名,即使该目录中没有更新的文件也是如此。有没有办法过滤掉这个输出中没有更新文件的uptodate文件和目录?

3 个答案:

答案 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).