rsync 通过 --exclude 和 --exclude-from 实现精准排除同步内容。--exclude 直接指定单个或多个路径/模式,--exclude-from 从文件批量读取规则;排除始终作用于源端,支持本地与远程双向同步;复杂层级控制可用 --filter。

Linux 中用 rsync 排除特定文件或目录不同步,是最常用也最可靠的方式。它支持灵活的过滤规则,能精准跳过不需要传输的内容,避免误同步或浪费带宽。
用 --exclude 直接排除单个或多个条目
这是最直观的方法,适合排除少量明确路径或模式的文件/目录。
- 排除某个目录(如
logs/):rsync -av source/ dest/ --exclude='logs/' - 排除某类文件(如所有
.tmp文件):rsync -av source/ dest/ --exclude='*.tmp' - 排除多个项目,可重复使用
--exclude:rsync -av source/ dest/ --exclude='cache/' --exclude='*.log' --exclude='.git'
注意:路径匹配基于源目录下的相对路径;logs/ 表示目录,logs(无斜杠)可能匹配同名文件,建议加斜杠明确语义。
用 --exclude-from 从文件批量排除
当要排除的条目较多(比如几十个日志目录、临时文件、构建产物),把规则写进文件更清晰、易维护。
- 新建一个排除列表文件,例如
exclude.list:temp/<br>node_modules/<br>*.swp<br>__pycache__/
- 同步时引用该文件:
rsync -av source/ dest/ --exclude-from='exclude.list'
每行一条规则,支持通配符和相对路径,空行和以 # 开头的行会被忽略。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
排除远程目录中的特定内容
rsync 支持在远程同步中同样生效的排除逻辑,规则写法一致。
- 推送到远程服务器并跳过
uploads/cache/:rsync -avz --exclude='cache/' ./site/ user@host:/var/www/site/ - 从远程拉取时排除大体积备份文件:
rsync -avz user@host:/backup/ ./local-backup/ --exclude='*.tar.gz'
排除始终作用于源端(即读取侧),无论方向是本地→远程还是远程→本地。
区分 --exclude 和 --filter 的适用场景
--exclude 足够应对绝大多数需求;若需更精细控制(比如只排除某层的 temp,但保留子目录里的同名目录),可用 --filter:
- 仅排除顶层的
temp/:rsync -av --filter='exclude /temp/' source/ dest/ -
/开头表示绝对路径(相对于源根),不加则为通配匹配
日常使用推荐优先用 --exclude,简洁明确;复杂层级逻辑再考虑 --filter。










