本地文件同步到CentOS:rsync排除规则示例,一次写对再也不踩坑
本地文件同步到CentOS:rsync排除规则示例

把Windows或macOS里的代码、照片、日志往CentOS服务器上扔,最顺手的工具还是rsync。可一旦目录里混着缓存、临时文件、私人电影,同步过去既占空间又拖速度。学会写排除规则,比多买一块硬盘更划算。
为什么排除规则比--delete更温柔
很多人第一次用rsync直接加--delete,结果把服务器上的历史备份也清空了。排除规则只挡新增,不删旧爱,先保命再提速。
一条命令看懂rsync骨架
rsync -avz --exclude-from=exclude.txt /本地路径/ user@centos:/目标路径/
把exclude.txt写对,后面一切省心。

exclude.txt长什么样
每行一条模式,不带斜杠也生效,相对路径即可:
*.log
node_modules/
.DS_Store
Thumbs.db

~$*
最后一行匹配Office临时文件,Windows党秒懂。
五组真实场景模板,直接抄
1. 前端项目
src/dist/
*.map
.env.local
2. 摄影原片
*.psd
/Lightroom/LR Cache/
3. 日志仓库
logs/*.gz
logs/20*/
4. 混合开发
*.pyc
pycache/
.vscode/
5. 家庭备份
*.mkv
/私人/
易错点:斜杠到底加不加
目录后面加/表示“只排除目录内的东西”,保留空目录本身;不加/连目录一起屏蔽。想留壳就加/,想斩草除根就不加。
通配符别乱用
.log会挡掉a.log、dir/b.log;/.log才能递归挡掉所有子目录日志。别写/.log,多一个星就翻车。
在CentOS端验证
先跑--dry-run:
rsync -avzn --exclude-from=exclude.txt /本地路径/ user@centos:/目标路径/ | grep -v '/$'
看到没传的就是被排除的,确认无误再去掉n真干。
一条命令排除多个文件
懒得建文件?直接行内写:
rsync -avz --exclude='*.log' --exclude='.git/' /本地路径/ user@centos:/目标路径/
超过三条就建文件,省眼又省手。
把排除反过来用--include
只想传jpg,其他全挡:
rsync -avz --include='/' --include='.jpg' --exclude='*' /本地路径/ user@centos:/目标路径/
顺序别反,include在前,exclude在后,rsync按顺序匹配。
定期任务怎么写
crontab -e里加:
0 2 * rsync -avz --exclude-from=/home/user/exclude.txt /本地路径/ user@centos:/目标路径/ >>/var/log/rsync.log 2>&1
日志单独存,出错能回查。
常见翻车现场
1. 把exclude.txt存成Windows换行,CentOS不认,dos2unix救场。
路径写绝对,结果规则失效,保持相对。
忘了给ssh配密钥,每天手动输密码,ssh-copy-id一键搞定。
排除规则写得好,rsync比收费网盘还快;写得烂,同步一次后悔三天。先dry-run再真干,备份永不嫌多。
