用 rsync 同步文件:从本地备份到远程增量
用 rsync 同步文件:从本地备份到远程增量
复制文件大家都会用 cp,但要把一台服务器的目录定期同步到另一台、只传改动的部分、断网后能续传,cp 就不够用了。rsync 是 Linux 下最常用的同步工具:增量传输、断点续传、还能保持权限和时间戳。今天把最常用的几种用法一次讲清。
一、本地同步:先会 -av
最基本的写法是:
rsync -av 源目录/ 目标目录/
-a 是归档模式,一次性保留权限、时间戳、属主和软链接;-v 是显示传输过程。第一次用 rsync 最容易踩的坑是源目录末尾的斜杠:源目录带 / 表示只同步目录里面的内容,不带 / 则会把目录本身也复制过去。写命令前先想清楚你要的是哪一种。
二、只传改动的部分
rsync 的核心是增量:它先比较两边文件的大小和修改时间,只传新增或改过的文件。第一次同步 1GB 的目录可能要几分钟,改了一个小文件后再跑一次,往往一秒就完成,只传了几 KB。这也是它适合做定期备份的原因——每次只补变化量。
三、同步到远程服务器
rsync -av 本地目录/ 用户名@服务器地址:/目标路径/
远程同步走 SSH,不用在服务器上另外装服务端。传文本多的目录可以加 -z 开启压缩;传大文件加 --progress 看进度,心里有数。配合 SSH 免密登录,写进脚本里就能无人值守跑。
四、排除不需要的文件
备份代码目录时,node_modules 和日志文件没必要同步:
rsync -av --exclude ‘node_modules’ --exclude ‘*.log’ 源目录/ 目标目录/
排除规则多了可以写进一个文本文件,用 --exclude-from=exclude.txt 统一管理,每行一条规则。
五、–delete:让两边完全一致
加上 --delete 后,目标端多余的文件会被删掉,同步完两边一模一样,适合做镜像备份。但这也是最危险的参数:源目录路径写错,可能误删目标端文件。正确姿势是先加 -n(–dry-run)演练一遍,确认要传什么、删什么,确认无误后再去掉 -n 真正执行。
六、断点续传与限速
-P 相当于 --partial 加 --progress,支持断点续传:大文件传一半断了,下次接着传,不用重来。–bwlimit=1000 可以把速度限制在 1000KB/s,避免同步占满带宽影响线上业务。
七、实战:每天凌晨自动备份
结合 crontab,每天凌晨 2 点把 /data 同步到备份机:
0 2 * * * rsync -az --delete /data/ 用户名@备份机地址:/backup/data/
配合免密 SSH 密钥使用,跑起来后基本不用管,定期看一眼日志确认成功即可。
小结
rsync 的核心就两点:增量(只传变化)和精确(目标与源一致)。记住两条安全习惯:先用 -n 演练再动真格,–delete 一定先确认源目录路径。小步验证后再上定时任务,备份这件事就稳了。
- 点赞
- 收藏
- 关注作者
评论(0)