我在cron作业中运行rsync,并使用
/opt/rsync.sh ... > /var/log/rsync.log 2>&1
我知道,我可以将rsync输出作为传输字节数的汇总,等等。我也知道我可以让rsync详细打印每个文件传输的百分比。但是当我将冗长的输出重定向到一个文件时,它会为每个文件生成一个输出列表,因为它经常将百分比发送到stdout。
我怎样才能在中间得到一些东西,打印每个文件传输的每个文件,并为每个文件的进程百分比打印一个总行,但不是多行?
发布于 2019-09-20 00:27:26
据我所知,您正在执行rsync并将STDOUT重定向到一个文件--类似于
rsync -avz mydir targetserver: > rsync.log
如果是这样的话,那么您可以简单地使用参数--log-file=rsync.log
告诉它直接写入上述日志文件,而不是使用STDOUT。所以上面的命令行可以改为
rsync --log-file=rsync.log -avz mydir targetserver:
另一个选项是从rsync命令中删除--progress
选项,这样就不会显示百分比。
对于脚本来说,用输出格式替换--progress
可能更有意义,该格式列出了已经进行的更改类型。使用itemize-changes
选项很容易做到这一点。从手册页:
-i -更改请求一个简单的逐项列表,列出对每个文件所做的更改,包括属性更改。这与指定-out格式=‘%i %n%L’完全相同.如果重复该选项,也会输出未更改的文件,但前提是接收到的rsync至少是2.6.7版本(您可以在较早版本的rsync中使用-vv,但这也会打开其他详细消息的输出)。
https://serverfault.com/questions/984978
复制