rsync 排除缓存目录的核心是用 --exclude(如 'node_modules/')或 --exclude-from 文件精准过滤无意义临时文件,避免传输、提升效率;推荐加尾斜杠明确排除目录,并用 --dry-run 验证生效。

用 rsync 排除缓存目录,核心是避免传输大量无意义的临时文件(比如 node_modules、__pycache__、.cache、tmp 等),既能减少数据量,又能加快同步速度、节省带宽和磁盘 I/O。
明确哪些目录该排除
常见需排除的缓存类目录包括:
-
node_modules/(前端/Node.js 项目) -
__pycache__/和*.pyc(Python 编译缓存) -
.cache/、cache/、tmp/、temp/ -
.git/(版本库元数据,通常无需同步) -
.DS_Store、Thumbs.db(系统生成的隐藏文件)
用 --exclude 正确排除目录
注意:rsync 的 --exclude 参数匹配的是路径中的“部分”,不是完整绝对路径;加不加尾部斜杠会影响行为——--exclude 'cache' 会匹配名为 cache 的文件或目录,而 --exclude 'cache/' 明确只匹配目录(推荐加斜杠避免误删同名文件)。
- 排除多个目录,可重复使用
--exclude:
- 也可用单个
--exclude配合通配符(注意引号保护):
⚠️ 注意:{...} 是 shell 的 brace expansion,必须用单引号包裹整个字符串,否则 shell 可能提前展开出错。
更灵活的排除方式:用 --exclude-from 文件
当排除规则较多时,建议写进独立文件(如 rsync-exclude.txt),每行一个模式:
.git/
__pycache__/
*.log
*.tmp
.DS_Store
然后用 --exclude-from 引入:
这种方式便于复用、版本管理,也避免命令行过长出错。
验证排除是否生效(先试运行)
加 --dry-run(或 -n)参数,让 rsync 只模拟执行、不真正传输,配合 -v 可清楚看到哪些文件被跳过:
输出里如果没出现 node_modules/xxx 类路径,说明排除成功。确认无误后再去掉 -n 执行真实同步。











