rsync纯净同步需用--exclude精准排除临时文件,如temp/、*.log、.cache/等,并配合--exclude-from加载规则文件和--delete清理目标端残留;执行前务必用-n预览。

用 rsync 排除临时文件做纯净同步,关键在于精准控制哪些文件不参与传输,避免把缓存、日志、编译产物等“脏数据”一并复制过去。核心是 --exclude 参数配合合理模式,再搭配归档与增量机制,真正实现干净、高效、可复现的同步。
明确要排除的典型临时文件类型
常见需过滤的临时内容包括:
- 以
temp、tmp、.cache、.swp开头或结尾的目录/文件 - 日志文件:
*.log、journal、/var/log/*.old - 编译中间产物:
*.o、*.obj、Makefile~、build/、target/ - 编辑器备份:
*~、.*.swp、.DS_Store - 压缩包和安装包:
*.zip、*.tar.gz、*.deb、*.rpm
单次命令中用 --exclude 多次指定
最直接的方式是在一条 rsync 命令里反复使用 --exclude,每个模式独立生效:
rsync -avz --exclude='temp/' --exclude='*.log' --exclude='*.swp' --exclude='.cache/' /src/ /dst/
注意:
- 目录排除要带尾部斜杠(如
temp/),否则可能只排除同名文件而非整个目录 - 通配符
*在 shell 中会被提前展开,建议用单引号包裹防止误解析 - 排除顺序不影响结果,rsync 按规则逐条匹配,首个命中即跳过
用 --exclude-from 从文件批量加载规则
当排除项较多时,推荐写入一个规则文件(如 rsync-ignore.txt),再用 --exclude-from 引入:
# rsync-ignore.txt 内容示例 temp/ *.log .cache/ *.o *.pyc .DS_Store node_modules/
执行命令:
rsync -avz --exclude-from='rsync-ignore.txt' /src/ /dst/
这样更易维护、复用,也方便不同项目共用同一套过滤策略。
结合 --delete 实现目标端真正“纯净”
仅排除源端文件还不够——如果目标目录里已有被排除的旧文件(比如上次同步遗留的 app.log),它们仍会残留。加 --delete 可让目标严格对齐源(不含排除项):
rsync -avz --delete --exclude-from='rsync-ignore.txt' /src/ /dst/
⚠️ 注意:--delete 有风险,建议先加 -n(dry-run)预览将删哪些文件:
rsync -avn --delete --exclude-from='rsync-ignore.txt' /src/ /dst/
确认无误后再去掉 -n 执行真实同步。











