7

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

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

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

4

3 回答 3

5

您可以通过 grep 管道它:

rsync -vv (your other rsync options here) | grep -v 'uptodate'
于 2009-12-15T05:17:17.587 回答
4

Rsync 的输出可以广泛定制,看看rsync --info=help-v是从现代 rsync 获取信息的一种相当粗略的方法。

就您而言,我不确定您认为“更新”的确切含义。比如把receiver也删了?只有文件/目录,还有管道和符号链接?模组/访问时间还是只有内容?

作为一个简单的测试,我建议你看一下:rsync --info=name1 <other opts>.

于 2013-12-11T19:20:35.257 回答
2

这是我的看法......(经过工作证明并且对此非常满意。)

rsync -arzihv --stats --progress   \
    /media/frank/foo/              \
    /mnt/backup_drive/    | grep -E '^[^.]|^$'

重要的一点是-ifor itemize。

grep 允许所有输出行通过(也包括任何摘要,如 中的摘要,在-h --stats此之前也是空的,这有利于易读性),除了以点开头的那些:这些是描述未更改文件的那些:

A . means that the item is not being updated  (though  it
    might have attributes that are being modified).
于 2017-03-01T15:03:33.390 回答