当前位置: 首页
系统平台
Linux文件同步失败重试日志查看方法

Linux文件同步失败重试日志查看方法

热心网友 时间:2026-07-13
转载

同步工具默认不写系统日志,失败重试细节需手动记录。rsync本身不重试,重试由外层脚本或systemd实现。查看日志需检查命令参数中的--log-file、捕获stderr,或查看systemd服务的StandardOutput、StandardError设置。重试日志常由脚本显式写入自定义路径,而非系统日志。

同步失败日志去哪了?别再在系统日志里盲目查找

先了解几个关键点,避免你一头扎进系统日志中翻找半天,却毫无收获。

默认情况下,rsyncunisonlftp 或者 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-unitjournalctl -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-failureRestartSec=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 在兜底——而那个兜底逻辑的日志,需要你自己来记录。

来源:https://www.php.cn/faq/2812752.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
CentOS 7手动释放内存缓存的详细方法

CentOS 7手动释放内存缓存的详细方法

手动清理Linux内存缓存需先执行三次sync防丢数据。echo1清页缓存,echo2清目录与inode缓存,echo3全清但慎用。清理前依据available而非free判断内存压力,清理后关注available及swap使用率。

时间:2026-07-13 07:34
Mac菜单栏查看当前WiFi频率的实用方法

Mac菜单栏查看当前WiFi频率的实用方法

Mac无需第三方工具,按住Option键点击菜单栏Wi-Fi图标即可查看频率或信道;使用无线诊断工具的扫描信息可确认频段;系统报告中的PHYMode字段显示硬件级协商结果,三种方法覆盖从桌面快捷查看到底层验证。

时间:2026-07-13 07:33
CentOS 7系统默认语言修改方法

CentOS 7系统默认语言修改方法

CentOS7修改默认语言需先安装zh_CN UTF-8语言包,再通过localectl或 etc locale conf设置LANG为zh_CN UTF-8。修改后验证locale输出,注意避免LC_*变量覆盖,图形界面与日志可能需额外处理。

时间:2026-07-13 07:33
Linux查看具体磁盘逻辑卷管理组坏块屏蔽记录

Linux查看具体磁盘逻辑卷管理组坏块屏蔽记录

LVM本身不记录或管理坏块,坏块屏蔽由文件系统(如e2fsck将坏块列表写入超级块)和硬盘固件(如S M A R T 重映射)处理。用户需绕过LVM层,必须直接检查物理设备(如 dev sdb2)的坏块列表及重映射计数等信息,才能确认其屏蔽记录情况。

时间:2026-07-13 07:33
银河麒麟系统Prometheus安装配置方法详解

银河麒麟系统Prometheus安装配置方法详解

在银河麒麟系统上部署Prometheus,需先确认CPU架构(ARM64或AMD64),下载对应安装包,创建标准目录并解压。接着配置自监控,创建非root用户,手动启动验证。最后注册为systemd服务,实现开机自启。注意配置文件路径及权限设置。

时间:2026-07-13 07:33
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜