加 -n(--dry-run)参数可模拟 rsync 操作,仅输出将执行的复制、更新或删除动作而不实际传输;需搭配 -v 显示详细文件列表,配合 --delete 和路径斜杠规范才能准确预览,还可验证 exclude/include 规则是否生效。

用 -n(或 --dry-run)参数就能实现模拟测试,它不传输、不修改、不删除任何文件,只输出 rsync 计划执行的操作。
加 -n 参数查看同步动作预览
在任意 rsync 命令末尾加上 -n,rsync 就会跳过实际传输,仅计算差异并列出将要复制、更新或删除的文件。例如:
- rsync -avzn /src/ /dst/ —— 本地同步模拟
- rsync -avzn user@host:/remote/ /local/ —— 拉取远程内容前预览
- rsync -avzn --delete /src/ /dst/ —— 同时预览将被删除的多余文件
配合 -v 和 --delete 才能看到完整清单
单独用 -n 不会显示详细信息,必须搭配 -v(verbose)才能看到具体文件名;若用了 --delete,也要加 -v 才能看见“deleting xxx”这类提示行:
- 没加 -v:只显示 summary(如 “sent 0 bytes…”),看不到文件列表
- 加了 -v:每行显示一个操作,如 <f+++++++++ file.txt(新增)、.f..t...... config.ini(时间戳变更)、deleting old.log(将被删)
注意路径结尾斜杠的影响
rsync 对斜杠非常敏感,直接影响同步范围和模拟结果:
- /src/(带斜杠)→ 同步目录内容(不含 src 自身)
- /src(不带斜杠)→ 同步整个 src 目录(含目录名)
- 模拟时也按同样逻辑判断,务必保持与真实运行一致,否则预览结果会误导
结合 --exclude 或 --include 更准确评估过滤效果
如果命令中用了排除规则,比如 --exclude='logs/' 或 --exclude='*.tmp',加 -n -v 后能直观确认这些文件是否真的被跳过:
- 被排除的文件不会出现在输出列表中
- 若发现本该排除的文件仍列在“sending”行,说明 pattern 写法有误(如漏掉尾部斜杠、通配符位置不对)
- 建议先用 -n -v 验证过滤逻辑,再执行真实同步

















