rsync -u(--update)可避免覆盖目标中更新的文件,仅同步源文件修改时间晚于目标的情况;依赖 mtime,适用本地备份等场景,可搭配--ignore-existing、--checksum、--backup、--dry-run等选项增强安全性。

用 rsync -u(即 --update)就能避免覆盖目标中更新的文件。
核心方法:--update(-u)选项
这个选项会让 rsync 只同步源文件比目标文件“新”的情况。如果目标文件的修改时间晚于源文件,rsync 会跳过它,不作任何操作。
- 命令示例:
rsync -avu /source/ /destination/ - 适用场景:本地备份、定时同步、防止误覆盖重要日志或配置文件
- 注意:它依赖文件的 mtime(修改时间),不是大小或内容校验
其他常用保护策略
根据具体需求,可搭配使用以下选项:
- --ignore-existing:目标已有同名文件就跳过,不管新旧 —— 更保守,适合“只增不改”场景
- --checksum(-c):强制按内容校验决定是否同步,避开时间戳误差问题,但更耗 CPU 和 I/O
- --backup(-b):覆盖前先备份旧文件(默认加 ~ 后缀),留出回退余地
- --dry-run(-n):先模拟运行,看哪些文件会被覆盖,确认无误再执行
实际使用小贴士
结尾斜杠很重要:源路径带 / 表示“同步内容”,不带则多嵌套一层目录;目标路径带 / 是常规做法,避免意外创建子目录。
- 推荐组合:
rsync -avun --delete /src/ /dst/(先 dry-run + delete 检查) - 确认无误后去掉
n:rsync -avu --delete /src/ /dst/ - 若担心时间不准,加
-c替代-u,但仅在必要时启用











