rsync --delete 参数详解与清空目录实践

介绍 rsync --delete 的作用、常见用法与注意事项,并给出用空目录快速清理目标目录的实践示例。

rsync --delete 的核心作用是:删除目标目录中“源目录不存在”的文件,从而让目标端与源端保持一致。

它常用于以下场景:

  • 同步时清理目标端的历史冗余文件
  • 借助空目录快速清空目标目录

基础语法

1
rsync -a --delete 源目录/ 目标目录/
  • -a:归档模式,保留权限、时间戳等属性
  • --delete:删除目标端中多出的文件

关键注意:源目录 末尾是否带 / 会影响同步行为。带 / 表示同步目录内容,不带 / 表示同步目录本身。

用空目录快速清空目标目录

如果你的目标是“保留目录结构但清空内容”,可以让一个空目录作为源进行同步:

1
2
3
4
5
# 1) 创建空目录
mkdir -p /tmp/empty_dir

# 2) 同步并删除目标目录中的内容
rsync -a --delete /tmp/empty_dir/ /path/to/target_dir/

这种方式在大目录场景下通常比逐个删除更高效,也更容易写入自动化脚本。

常用扩展参数

  • --delete-before:先删除再传输,某些场景下效率更高
  • --progress:显示传输与处理进度

示例(清理 Nginx 日志目录):

1
rsync -a --delete --progress /tmp/empty_dir/ /var/log/nginx/

使用建议

  • 先用 --dry-run 预演,确认删除范围再执行
  • 在生产环境使用前,建议先做一次目标目录备份
  • 对关键路径执行时,优先在低峰时段操作
记录并分享
使用 Hugo 构建
主题 StackJimmy 设计