直接查正在运行的 rsync 进程(如 ps aux | grep rsync)可快速确认是否同步中;rsync 默认不生成日志,需显式添加 --log-file 参数才记录;其无任务队列,每次调用均为独立进程,故仅能通过当前进程和手动日志追溯。

rsync 进程和日志怎么看
直接查正在跑的 rsync 进程是最快确认“有没有在同步”的方式。它不依赖配置或界面,只看系统当前状态。
- 运行
ps aux | grep rsync,若看到类似rsync -avz /src/ user@host:/dst/的行,说明任务正在执行 -
rsync默认不写日志,加--log-file=/var/log/rsync.log才会落盘;没加这个参数就查不到文件级记录 - 注意区分:
rsync本身不维护任务队列,每次调用都是独立进程——所以没有“任务ID”或“历史列表”,只有当前进程和你手动存的日志
inotifywait + rsync 脚本里怎么知道哪几个文件刚被触发
这类组合脚本靠 inotifywait 输出事件来驱动 rsync,关键是要让事件信息可追溯。
-
inotifywait -m -e modify,create,delete --format '%w%f %e' /path中的%w%f是绝对路径,%e是事件类型(如CREATE、MODIFY),必须显式输出才能知道“谁变了” - 常见漏点:脚本里用
while read file但没 echo 或 logger 记录$file,结果只知道“同步发生了”,却不知道是哪个文件触发的 - 建议在
rsync前加一句echo "$(date): syncing $file" >> /var/log/inotify-sync.log,否则出问题时完全无法回溯源头
Syncthing 怎么查到某次同步具体动了哪些文件
Syncthing 不暴露实时文件粒度的操作流,但可通过日志和详情页定位最近变更。
- 打开 Web 界面 → 进入目标文件夹 → 点击右上角 ⋯ → Show Folder Log,这里显示的是按时间倒序的文件级操作(
Updated、Deleted、Syncing) - 日志默认只保留最近 100 条,想查更早的得提前配置:
Settings → Advanced → Log File开启并指定路径,否则重启后清空 - 注意:
Syncing状态只是“已加入同步队列”,不代表传输完成;真正完成要等状态变成Up to date或日志出现Finished
为什么 top 或 htop 里看不到 rsync 进程,但磁盘在狂转
这通常不是同步工具的问题,而是底层行为被掩盖了。
-
rsync在大量小文件场景下可能快速启停进程,ps快照抓不到,但 I/O 持续在跑——用iostat -x 1看%util和await更准 - 如果用了
--delete,rsync会先扫描目标目录做比对,这个阶段 CPU 和磁盘都忙,但还没启动传输进程 - Syncthing 的“同步中”状态可能卡在 hashing 阶段(尤其大文件),此时无网络上传,但 CPU 和磁盘占用高,容易误判为卡死











