rsync --delete 的核心作用是:删除目标目录中“源目录不存在”的文件,从而让目标端与源端保持一致。
它常用于以下场景:
- 同步时清理目标端的历史冗余文件
- 借助空目录快速清空目标目录
基础语法
|
|
-a:归档模式,保留权限、时间戳等属性--delete:删除目标端中多出的文件
关键注意:源目录 末尾是否带 / 会影响同步行为。带 / 表示同步目录内容,不带 / 表示同步目录本身。
用空目录快速清空目标目录
如果你的目标是“保留目录结构但清空内容”,可以让一个空目录作为源进行同步:
|
|
这种方式在大目录场景下通常比逐个删除更高效,也更容易写入自动化脚本。
常用扩展参数
--delete-before:先删除再传输,某些场景下效率更高--progress:显示传输与处理进度
示例(清理 Nginx 日志目录):
|
|
使用建议
- 先用
--dry-run预演,确认删除范围再执行 - 在生产环境使用前,建议先做一次目标目录备份
- 对关键路径执行时,优先在低峰时段操作