如何让rsync仅将统计摘要输出到日志文件?
如何让rsync仅将统计摘要输出到日志文件?
嗨,这个需求我太懂了——用rsync同步时,既不想被一大堆文件列表刷屏,又只想把干净的统计摘要存下来用于邮件通知对吧?给你几个简单靠谱的方案:
最直接的方案:用--quiet抑制文件列表输出,再重定向统计信息
rsync的--stats参数生成的摘要信息是输出到标准输出(stdout)的,而默认的文件同步明细会直接显示在屏幕上。我们可以用--quiet(或简写-q)把这些明细关掉,再把剩下的统计摘要直接重定向到文件里:rsync -a --quiet --stats src/ dest/ > rsync_summary.log这样
rsync_summary.log里就只有你需要的统计数据了,比如文件数量、传输字节数、同步耗时这些核心信息,完全干净。如果需要保留屏幕输出但仅存摘要到文件
要是你运行脚本时还想在屏幕上看到同步的文件明细,但只把统计摘要存文件,可以利用管道过滤统计部分。不过要注意不同rsync版本的统计格式可能略有差异,示例如下:rsync -a --stats src/ dest/ 2>&1 | grep -A 30 "Number of files:" > rsync_summary.log这里
-A 30表示匹配到"Number of files:"后,再取后面30行内容(足够覆盖大部分rsync的统计摘要),这样就能把统计部分单独提取出来存文件,屏幕上还是能看到所有同步信息。额外小技巧:同时捕获错误信息
脚本运行时如果需要记录同步错误,可以把错误输出(stderr)单独存到另一个文件,方便后续排查:rsync -a --quiet --stats src/ dest/ > rsync_summary.log 2> rsync_errors.log
之前你用--log-file之所以会生成大文件,是因为这个参数本来就是用来记录所有同步操作的详细日志(每个文件的增删改、权限变化等),和--stats的摘要不是一回事,所以确实不是实现你需求的正确方式~
备注:内容来源于stack exchange,提问作者Scar_UY
相关产品推荐
相关产品推荐

