用 rsync 做增量备份的入门实践
~~家里和工作中攒下的数据越来越多:照片、文档、代码、配置文件……真正丢过一次数据的人都知道,备份不是"有没有"的问题,而是"最近一份是什么时候"的问题。在 Linux 上做备份,我用得最顺手的工具是 rsync:它只传变化的部分,速度快、语义清晰,一条命令就能起步,再配上定时任务,就是一套能长期跑下去的增量备份方案。这篇把我日常的用法和踩过的坑整理出来。
先理解 rsync 在做什么
rsync 的核心是增量传输:它先比较源和目标的文件列表与校验信息,只发送有差异的部分。第一次是全量拷贝,之后每次运行都只是增量同步。配合归档模式 -a,权限、时间戳、软链接、属主等元信息都会被原样保留,恢复时不需要再手工修权限。
一条最小可用命令长这样:
rsync -avh --progress ~/data/ /backup/data/
-v 输出过程,-h 让文件大小以易读单位显示。注意源路径末尾的斜杠,这是 rsync 最著名的坑:~/data/ 表示"把 data 里面的内容同步过去",而 ~/data(不带斜杠)表示"把 data 这个目录本身同步过去",结果会多出一层目录。写脚本时我固定带斜杠,并在注释里写明,避免半年后自己看糊涂。
让它成为真正的备份,而不只是拷贝
日常我用的是这一组参数:
rsync -avh --exclude='.cache' --exclude='*.tmp' /srv/data/ /backup/data/
几点经验:
一是善用 --exclude。缓存、临时文件、日志这类可再生数据没必要进备份,既占空间又拖慢每次同步。把排除规则集中写进一个文件,用 --exclude-from=exclude.txt 引入,维护起来更清楚。
二是慎用 --delete。加上它之后,目标端会删掉源端已经不存在的文件,得到一份严格镜像。镜像适合"同步"场景,但作为备份有个风险:源端误删了文件,下一次同步会把备份里的也删掉。所以我的做法是:日常备份不加 --delete;确实要镜像时,先加 --dry-run 空跑一遍,确认将要删除的清单符合预期,再正式执行。这一步花不了十秒,能拦住大多数事故。
三是远程备份走 SSH:
rsync -avh -e ssh ~/data/ user@backup-host:/data/backup/
密钥登录配好后,这条命令可以直接放进定时任务无人值守地跑。
进阶:用硬链接做每日快照
增量同步的缺点是目标端永远只有"最新一份"。想要"每天一份、还能随时翻回三天前",可以用 --link-dest 做硬链接快照:
rsync -av --link-dest=/backup/current ~/data/ /backup/snap-2026-11-12/
ln -sfn /backup/snap-2026-11-12 /backup/current
原理是:与上一份快照相比没变的文件,在新快照里只建一个硬链接,不占额外空间;变了的文件才存新副本。于是每一份快照看起来都是完整全量,实际磁盘占用只比一份全量多出每日变化量。这是很多老牌备份脚本(比如 rsnapshot)的底层套路,自己手写也就几行。
定时与限速
备份必须自动化,靠记性必然断档。cron 里一行即可:
30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
脚本里记得把 rsync 的退出码记进日志,失败时能第一时间发现。另外在办公网络或家用宽带上跑远程备份时,加上 --bwlimit=5120(单位 KB/s)限制速度,避免把上行带宽吃满影响其他业务。
恢复与校验
备份的终点是恢复。rsync 的恢复就是把源和目标对调方向拉回来:
rsync -avh /backup/data/ ~/data/
恢复前同样建议先 --dry-run 看清单。每隔一段时间,我还会加 --checksum 做一次强校验同步:它按内容而不是时间戳和大小判断文件是否变化,慢一些,但能发现"大小没变、内容已坏"的静默损坏。日常增量不必开,季度校验开一次比较合适。
常见坑清单
- 路径尾斜杠:带与不带,语义完全不同,写脚本时固定一种并注释。
--delete误删:源路径写错(比如写成空目录)时,镜像同步会把目标清掉,先空跑再实跑。- 属主保留:
-a里的属主、设备文件等选项需要 root 权限,普通用户跑会报警告并跳过,备份系统目录时要用 sudo。 - 同步进自己:如果目标目录位于源目录之内,会出现递归把备份同步进备份的情况,务必
--exclude掉目标路径。 - 中文文件名:在 LANG 为 C 的老环境下可能出现乱码比较,脚本开头统一设置
export LANG=C.UTF-8更稳妥。
小结
rsync 的入门门槛只有一条命令,但把增量、排除、硬链接快照、定时和校验这几块拼起来,就是一套不依赖任何商业软件、完全在自己掌控里的备份方案。先从每天凌晨把最重要的一份数据同步到另一块盘开始,跑稳一周,再逐步加上快照和远程,远比一上来追求大而全更可靠。~~
- 点赞
- 收藏
- 关注作者
评论(0)