服务公告

服务公告 > 技术教程 > 用 rsync 做增量备份:参数详解与定时任务

用 rsync 做增量备份:参数详解与定时任务

发布时间:2026-10-10 10:44
## 适用场景 rsync 的核心优势是增量传输:两端先比对文件列表与修改时间、大小,只搬运有差异的部分,第一次全量慢,之后每次都快,特别适合网站目录、数据库导出件这类大部分内容不变的数据。它直接走 SSH 通道,目标机不需要额外装服务,一台顺云云服务器推到另一台,或者反过来从备份机拉取,都能直接跑。相比 tar 打包再 scp,它省带宽、省时间,还能保留权限与属主。 ## 参数与步骤 最常用的组合是 -a 与 --delete。a 是归档模式,保留权限、属主、时间戳并递归处理目录,还支持断点续传中断后重跑;--delete 让目标端与源端保持镜像,源里已删除的文件在备份里同步消失,适合"备份就是当前状态快照"的思路。目录末尾斜杠有讲究:src/ 指目录里面的内容,src 指目录本身,写错会让备份多套或少套一层目录。 ```bash rsync -a --delete --exclude='*.log' --exclude='.git' \ /var/www/example/ backup-host:/data/backup/example/ ``` 排除规则支持通配,日志、缓存、版本库这类可再生内容都该排除,备份体积和耗时会明显下降。跨公网链路带宽紧张时加 --bwlimit=2048 限速,单位是千字节每秒,避开业务高峰。定时执行交给 crontab,凌晨错峰运行并把输出落到日志: ```bash 0 3 * * * rsync -a --delete /var/www/example/ backup-host:/data/backup/example/ >> /var/log/rsync_www.log 2>&1 ``` ## 验证方法 备份不验证等于没备份。定期在目标端用 diff -r 抽查目录一致性,或挑几个关键文件比对 md5sum;更重要的功课是每季度做一次恢复演练,把备份拉回一台测试机,把服务完整起一遍,确认文件内容、目录权限、属主都正常,脚本能不能跑、页面能不能开,都得以演练结果为准。rsync 的输出必须重定向到日志并定期查看,磁盘满、目标机改密码、SSH 密钥变更都会让定时任务悄悄停摆,等需要恢复时才发现备份停在三周前,是最难受的局面。 ## 注意事项 --delete 方向不能搞反,把两端的源与目标对调执行等于用旧数据覆盖新数据,拿不准就先加 -n 干跑,只输出将要变更的清单不实际动手,确认无误再去掉。生产与备份两端的时间要大致同步,否则基于时间的增量判断会出偏差。数据库这类持续写入的数据,先 mysqldump 导出成文件再备份导出件,直接 rsync 数据目录在写入过程中拷出的多半不一致。