rsync 仅输出已传输/删除的文件

rsync 仅输出已传输/删除的文件

我在 cronjob 中运行 rsync,并使用在 cronjob 中重定向 rsync 的输出

/opt/rsync.sh ... > /var/log/rsync.log 2>&1

我知道,我可以让 rsync 输出只是传输字节数的摘要等等。我还知道我可以让 rsync 详细打印每个文件传输的百分比。但是当我将详细输出重定向到一个文件时,它会为每个文件生成一个输出列表,因为它经常将百分比发送到 stdout。

我怎样才能在两者之间取得一些东西,打印传输的每个文件以及每个文件的处理百分比的摘要(但不是多行)?

答案1

据我了解,您正在执行 rsync 并将 STDOUT 重定向到文件 - 类似于

rsync -avz mydir targetserver: > rsync.log

如果是这样,那么您只需使用参数--log-file=rsync.log告诉它直接写入所述日志文件,而不是使用 STDOUT。因此上面的命令行可以改为

rsync --log-file=rsync.log -avz mydir targetserver: 

另一个选择是--progress从 rsync 命令中删除该选项,这样就不会显示百分比。

对于脚本来说,用--progress列出已做哪些类型更改的输出格式来替换可能更有意义。使用选项可以轻松完成itemize-changes。从手册页中:

-i, --itemize-changes

请求对每个文件所做的更改(包括属性更改)的简单逐项列表。这与指定 --out-format='%i %n%L' 完全相同。如果重复该选项,则还会输出未更改的文件,但前提是接收 rsync 至少为 2.6.7 版(您可以将 -vv 与较旧版本的 rsync 一起使用,但这也会打开其他详细消息的输出)。

相关内容