使用--delete选项的rsync未删除目标端多余文件夹问题排查
rsync --delete 未生效的原因及解决方法
你的问题核心在于**--exclude与--delete的默认行为不匹配**:
--exclude=folder1/ --exclude=folder2/会让rsync跳过源端这两个文件夹的同步,同时默认也会跳过对目标端对应文件夹的删除检查- 默认的
--delete仅会删除源端已不存在的文件/文件夹,但不会处理源端存在但被你排除同步的内容,也不会主动删除目标端中匹配排除规则的多余内容
要实现「排除源端指定文件夹,且目标端与源端完全一致(删除所有多余内容,包括目标端的folder1/folder2)」,需要调整命令:
rsync -Aaq --exclude=folder1/ --exclude=folder2/ --delete --delete-excluded /SourceFolder/ /DestinationFolder/
关键参数说明:
--delete-excluded:让rsync额外删除目标端中所有匹配你指定排除规则的内容,确保目标端彻底移除那些你不想备份的文件夹- 注意修正目标路径的拼写错误:
/DesinationFolder/→/DestinationFolder/(笔误不影响当前功能,但建议修正避免后续路径混乱)
另外补充两个常见问题点:
- 源路径的尾斜杠
/SourceFolder/不能省略:如果漏掉尾斜杠,rsync会把SourceFolder整个文件夹同步到目标端,导致目录结构不符,也会让--delete逻辑混乱 - 运行rsync的用户需要对源路径和目标路径拥有足够的读写权限,权限不足会直接导致删除操作失败
内容的提问来源于stack exchange,提问作者Hadow
相关产品推荐
相关产品推荐

