在linux环境中,文件同步是数据备份、多节点内容协同的核心操作,不管是使用rsync、lsyncd还是sersync这类主流工具,同步过程中难免会因为网络波动、文件权限变更、存储满额触发失败重试,精准定位失败重试日志是快速排查同步故障的关键,接下来从多个维度介绍具体查询方法。

从系统日志全局检索同步失败日志
多数同步工具默认会将运行日志输出到系统日志中,因此全局检索是最通用的排查方式。对于搭载systemd的主流linux发行版,可以使用journald工具检索,执行命令`journalctl | grep -e "rsync|sync|failed|retry"`即可过滤出所有和同步失败重试相关的记录,如果需要查询指定时间范围的日志,追加`-s 2024-05-01 -u 2024-05-20`即可限定日期区间。对于非systemd的老旧发行版,系统日志默认存储在`/var/log/messages`(rhel系)或`/var/log/syslog`(debian系),执行`grep -e "rsync.*failed|retry" /var/log/messages`就能提取对应记录。
主流同步工具的专属日志查询
大部分同步工具支持自定义日志输出路径,会单独记录运行信息,优先查询专属日志效率更高。如果使用手动脚本调用rsync同步,通常脚本会将输出重定向到自定义路径,如`/var/log/rsync_sync.log`,执行`grep -e "failed|retrying" /var/log/rsync_sync.log`即可过滤出失败记录;如果使用sersync做实时同步,默认日志存储在`/usr/local/sersync/logs/`目录下,错误日志会单独记录失败重试的文件信息;如果使用lsyncd,默认日志路径为`/var/log/lsyncd/lsyncd.log`,检索`error`或`retry`关键词即可得到目标内容。
实时追踪当前同步任务的失败重试日志
如果同步任务正在运行,需要实时观测新的失败重试记录,可以使用tail工具实时追踪日志。执行`tail -f [对应日志路径] | grep "failed⁄|retry"`即可只输出新增的失败重试信息,不会被大量同步成功日志干扰。如果不清楚日志路径,可以通过进程id查询打开的日志文件,执行`lsof -p $(pidof 同步进程名)`即可找到对应的日志文件路径。

定时同步任务的日志排查
不少用户会通过crontab定时执行同步脚本,若脚本未配置自定义日志,crontab默认会将任务输出存储在用户邮件目录`/var/spool/mail/用户名`,例如root用户的日志就在`/var/spool/mail/root`,直接检索关键词即可找到同步失败重试的记录。
整体排查可遵循先查专属日志、再搜系统日志的顺序,能快速定位到需要的失败重试信息,大幅缩短排查同步故障的时间。(全文约775字)































