Linux文件同步失败重试日志查看方法
同步工具默认不写系统日志,失败重试细节需手动记录。rsync本身不重试,重试由外层脚本或systemd实现。查看日志需检查命令参数中的--log-file、捕获stderr,或查看systemd服务的StandardOutput、StandardError设置。重试日志常由脚本显式写入自定义路径,而非系统日志。
同步失败日志去哪了?别再在系统日志里盲目查找
先了解几个关键点,避免你一头扎进系统日志中翻找半天,却毫无收获。
默认情况下,rsync、unison、lftp 或者 inotifywait + scp 这些同步工具,根本不会将失败重试的细节写入系统日志——无论是 /var/log/messages 还是 journalctl,它们都不会记录这些信息。错误和重试行为仅输出到 stderr 或你指定的日志文件中。换句话说,如果没有显式配置,就不会写入磁盘。
因此,不要指望 grep "retry" /var/log/syslog 能返回结果,那多半是空的。真正需要查找的是同步命令自身产生的日志路径,或者其 stdout/stderr 的捕获位置。
如果一开始就卡住了,请先确认以下几点:
- 使用的是哪个同步工具?
rsync最为常见,但lftp的重试机制完全不同。 - 启动命令是否包含了
--log-file=、-o LogLevel=DEBUG、-v --debug这类参数? - 如果通过 systemd 启动,请检查
systemctl status sync-unit和journalctl -u sync-unit -n 100。但注意:只有将 stdout/stderr 重定向到 journal 的服务,才会留下重试记录。
rsync 的失败重试日志,需要手动开启
rsync 本身默认不会重试——它失败就立即退出,干脆利落。所谓的“重试”,其实是外层脚本或 systemd Restart=on-failure 在背后悄悄兜底。要查看每次失败与重试的完整上下文,必须让它将所有输出都记录下来:
- 添加
-v --log-file=/path/to/rsync.log:记录传输过程、跳过原因、IO 错误等。但注意,它不会出现“第几次重试”这样的字样。 - 添加
--debug=all(仅调试用):输出 socket 连接尝试、超时、重连动作,但日志极其冗长,且仅输出到终端,需要配合2>&1 | tee才能捕获。 - 真正的重试逻辑在 wrapper 脚本里?那么就需要查看脚本中是否有
echo "$(date) - retry #${i}" >> /var/log/sync-retry.log这类显式记录。
以下是一个最小可行的脚本示例,带有重试计数的功能:
for i in {1..3}; do
if rsync -a vz --delete user@host:/remote/ /local/ 2>>/var/log/rsync-full.log; then
echo "$(date) - success after $i attempts" >> /var/log/sync-summary.log
exit 0
else
echo "$(date) - failed attempt #$i" >> /var/log/sync-summary.log
sleep 5
fi
done
journalctl 查不到重试日志?检查 systemd 服务配置
如果你将同步任务配置为 systemd service,但 journalctl -u my-rsync.service 中看不到重试信息,很可能是因为以下几个原因:
- 没有设置
StandardError=journal(默认是inherit,继承父进程 stderr,常常指向 /dev/null) - 没有添加
Restart=on-failure或RestartSec=10,根本未触发重试 - 重试时,脚本每次都使用
> /tmp/log而非>>,导致旧日志被覆盖
正确的 service 片段应包含以下配置:
[Service] Type=oneshot ExecStart=/usr/local/bin/sync-wrapper.sh Restart=on-failure RestartSec=30 StandardOutput=journal StandardError=journal
排查时,优先检查这三个位置,避免大海捞针
不要在整个全局日志中反复翻找,请按顺序排查:
- 同步命令本身是否写入了日志文件?查看启动参数中的
--log-file、-o logfile=、2>/var/log/xxx.err。 - 执行该命令的用户 home 目录下,是否存在临时日志?例如
~/.rsync-log、~/sync-errors.log。 - 如果是 cron 触发,检查
MAILTO是否开启。失败时,邮件中通常会包含 stderr 内容。
真正的重试细节几乎从不进入 /var/log/ 目录树,除非你明确将其导向那里。最容易忽略的一点是:你误以为工具自带重试,其实只是 shell 循环或 systemd 在兜底——而那个兜底逻辑的日志,需要你自己来记录。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
CentOS 7手动释放内存缓存的详细方法
手动清理Linux内存缓存需先执行三次sync防丢数据。echo1清页缓存,echo2清目录与inode缓存,echo3全清但慎用。清理前依据available而非free判断内存压力,清理后关注available及swap使用率。
Mac菜单栏查看当前WiFi频率的实用方法
Mac无需第三方工具,按住Option键点击菜单栏Wi-Fi图标即可查看频率或信道;使用无线诊断工具的扫描信息可确认频段;系统报告中的PHYMode字段显示硬件级协商结果,三种方法覆盖从桌面快捷查看到底层验证。
CentOS 7系统默认语言修改方法
CentOS7修改默认语言需先安装zh_CN UTF-8语言包,再通过localectl或 etc locale conf设置LANG为zh_CN UTF-8。修改后验证locale输出,注意避免LC_*变量覆盖,图形界面与日志可能需额外处理。
Linux查看具体磁盘逻辑卷管理组坏块屏蔽记录
LVM本身不记录或管理坏块,坏块屏蔽由文件系统(如e2fsck将坏块列表写入超级块)和硬盘固件(如S M A R T 重映射)处理。用户需绕过LVM层,必须直接检查物理设备(如 dev sdb2)的坏块列表及重映射计数等信息,才能确认其屏蔽记录情况。
银河麒麟系统Prometheus安装配置方法详解
在银河麒麟系统上部署Prometheus,需先确认CPU架构(ARM64或AMD64),下载对应安装包,创建标准目录并解压。接着配置自监控,创建非root用户,手动启动验证。最后注册为systemd服务,实现开机自启。注意配置文件路径及权限设置。
- 热门数据榜
相关攻略
2026-07-13 07:34
2026-07-13 07:33
2026-07-13 07:33
2026-07-13 07:33
2026-07-13 07:33
2026-07-13 07:33
2026-07-13 07:32
2026-07-13 07:32
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

