【备份系列 02】VPS 数据备份 3-2-1:快照、rsync 与异地容灾实操
2026-08-15 · DevCraft Studio
机器被黑、误删、商家跑路,任何一条都能让你一夜回到解放前。本文用 3-2-1 原则在 VPS 上落地备份:本地快照 + 异地副本 + 自动校验,附可直接抄的 rsync/rclone 脚本、加密与 cron 自动化方案,并覆盖 CloudCone、RackNerd、Vultr 等厂商快照的取舍与恢复演练清单。
VPS 备份实战 · 共 4 篇
延伸阅读
更多相关攻略推荐:从 Git Push 到秒级上线:CI/CD 流水线与"无中断"发布、【VPS 进阶玩法精选 030】用 VPS 搭建云端 IDE(cod、连云厂商也看不到你的数据?机密计算(Confidential Com、被割裂的"云上互联网":数据主权(GDPR)、本地化存储与主权云(S、什么时候非得要独立 IPv4?便宜国外 VPS 独立 IP 适用场景。
一、先搞懂 3-2-1 到底在防什么
很多人以为"备份"就是把文件再存一份,真出事才发现存的那份和原件死在了同一个坑里。3-2-1 不是玄学,是一套从无数次数据灾难里总结出来的兜底框架:3 份数据副本(线上运行的一份,加上至少两份备份)、2 种不同存储介质(比如 VPS 本地磁盘加云存储,别全堆同一种 SSD 上)、1 份异地副本(地理上和主机分开,最好跨机房甚至跨厂商)。说白了,它防的是" correlated failure "——关联失效。举个例子,你把备份放在同一台机器的另一块盘上,听着有两份,可一旦整机被入侵、误删或机房断电,两份一起没。再比如只信厂商快照,快照和你的实例在同一个数据中心,机房着火或商家跑路,你连哭的地方都没有。3-2-1 的底层逻辑和"快照不等于备份"的完整论证,本系列第 1 篇(restic 加密去重工具链)和第 3 篇(厂商快照政策对比)讲得更透;本文不重复原理,直接给你能抄的 rsync / rclone 脚本、rclone crypt 加密、完整性校验与 cron 自动化。
为什么是"至少 3 份"?只留一份原件,一个 rm -rf 就永久消失;加一份备份,仍有可能两份同时中招(勒索软件往往把连得上的盘一起加密)。凑到三份且分开存放,三份同时坏的概率低到可以接受。对大部分个人站长和轻量业务来说,一份本地快照应急、一份 rsync 同步到另一台机器、一份 rclone 推到对象存储,就是最实在的 3-2-1。
二、厂商快照省心,但别全指望它
像 CloudCone、RackNerd、Vultr 这类商家面板里大多带一键快照,点一下就能把整块系统盘冻结成镜像,恢复时几分钟内还原整个系统,连操作系统、装好的环境、配置文件一起回来。它最大的优点是快和简单:Kernel 升级翻车、装包把依赖搞崩,回滚快照比重装省事太多。但它有几个绕不开的坑。
第一,快照和你的实例在同一个底层存储集群,本质是"同城副本",扛不住机房级灾难。第二,快照通常按容量计费,长期堆着不删很烧钱,Vultr 这类按小时计费的快照攒久了账单会让你肉疼。第三,快照是整盘镜像,想单独捞回一个被改错的配置文件得先挂盘,不够灵活。所以正确姿势是:快照当"近快速 rollback 用",不是唯一的备份。重大操作(换内核、大版本升级、迁移)前手动打一个快照,平时别让它无限增长,配合下面两套真正异地、可筛选的备份才算完整。各家厂商快照具体怎么计费、自动备份保留几天,差异很大(CloudCone 按服务器月费 30%、RackNerd 多无原生快照、Contabo 给 1 个免费快照……),逐项对比见本系列第 3 篇。
三、rsync 异地同步:把文件甩到另一台机器
rsync 是 Linux 自带的老牌同步工具,强项是只传变化的那部分,第一次全量跑完,之后每次增量,带宽和时间都省。最典型用法是把网站目录同步到一台独立的备份机:
rsync -avz --delete -e "ssh -p 22" /var/www/ user@backup-vps:/backups/www/
rsync -avz -e "ssh -p 22" /etc/ user@backup-vps:/backups/etc/参数里 -a 保留权限和时间戳,-v 看过程,-z 传输压缩;--delete 会让目标端和源端完全一致(删掉源端已删的文件),用之前想清楚,别把目标当存档。建议用 SSH 密钥登录,这样脚本能无人值守跑。数据库别直接 rsync 文件,要先落库:
mysqldump -u root -p --single-transaction --routines --triggers mydb > /backup/mydb-$(date +%F).sql
gzip /backup/mydb-$(date +%F).sql--single-transaction 对 InnoDB 能做一致性导出而不锁表,生产库一定要加。PostgreSQL 用 pg_dump 同理。把数据库 dump 和网站文件一起 rsync 过去,这台备份机就是你的第二份副本。
四、rclone 上云:真正的异地副本
rsync 解决的是"第二台机器",但两台机器可能在同一个机房甚至同一家厂商。要满足 3-2-1 里那"1 份异地",最省心的办法是用 rclone 把备份推到对象存储——Backblaze B2、Wasabi、Cloudflare R2、AWS S3 都行,支持 40 多种后端。参考价:B2 和 Wasabi 这类冷存大约 0.006 美元/GB/月,50GB 异地备份一个月才几毛钱,比一杯咖啡便宜。
安装和配置一次即可:
curl https://rclone.org/install.sh | sudo bash
rclone config
rclone sync /backup remote:bucket/vps-backup/ --bwlimit 10M --progresssync 会保证远端和本地一致;--bwlimit 10M 限速避免把上行带宽打满影响业务。想保留历史版本就用 copy 而不是 sync,或配合存储桶的版本控制。注意 rclone 默认明文上传,敏感数据务必加 crypt 远程加密(见下一节)。这样你手里就有:本地快照 + 备份机 rsync + 对象存储 rclone,三份、两种介质、一份真异地,3-2-1 闭环。
五、加密与完整性校验:备份不能被看穿也不能坏掉
备份里往往有数据库、密钥、用户隐私,裸奔扔到云上等于把家底送给别人。rclone 自带 crypt 远程,配置时设一个强密码,之后同步到云端的全是密文,存储账号被盗也读不出内容。另一思路是用 restic 或 BorgBackup 这类支持端到端加密和去重的工具,restic 还能自动 prune 旧快照。
比加密更常被忽略的是完整性校验。一个悄悄损坏的备份,出事时才发现恢复不了,比没备份还坑。两个习惯要养成:一是用 --checksum 或 rclone 的校验和比对,确保传过去的和源文件一致;二是定期抽查恢复。简单校验示例:
rclone check /backup remote:bucket/vps-backup/
sha256sum /backup/mydb-*.sql.gzrclone check 会逐文件比对哈希,告诉你两边是否对得上。把这份校验输出也存一份到异地,出问题时有据可查。
六、cron 自动化:别靠记忆力备份
手动备份的宿命是"周一一顿操作,然后忘了三个月"。所有备份必须交给 cron 定时跑。先把上面的逻辑写成一个脚本 /usr/local/bin/backup.sh,末尾清理过期文件:
#!/bin/bash
DATE=$(date +%F)
mysqldump -u root -pPASS --single-transaction mydb | gzip > /backup/mydb-$DATE.sql.gz
rsync -az -e "ssh -p 22" /var/www/ user@backup-vps:/backups/www/
rclone sync /backup remote:bucket/vps-backup/ --bwlimit 10M
find /backup -name "*.sql.gz" -mtime +7 -delete注意密码写脚本里有泄露风险,生产环境建议用配置文件或密钥管理,这里只为演示。然后写进 crontab:
crontab -e
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1意思是每天凌晨 2 点跑一次,日志落盘。find ... -mtime +7 -delete 自动删 7 天前的库备,防止磁盘被备份撑爆。数据库业务频繁的话,可以把 binlog / WAL 归档也加进去,把恢复点压到分钟级。
七、恢复演练:出事前先演一遍
业内一句话:没演练过的备份等于没备份。太多人平时从不恢复,真出事才发现脚本早挂了、密码早改了、dump 是空的。建议每季度做一次实战演练:开一台临时测试机(很多厂商有低价或试用实例),把最新备份恢复上去,验证网站能起、数据库能连、页面能开、SSH 密钥和配置文件都在。重点确认三件事:应用是否启动正常、数据是否完整、配置是否和线上一致。
更稳的做法是把"恢复"也写成脚本,顺手验证你的部署自动化。演练完把发现的问题记下来修掉——比如发现 rsync 漏了某个目录、发现数据库字符集不对——这些坑只有在演练时才会暴露,而不是在凌晨三点业务全挂时。把演练日期和结果写进运维文档,下次心里有底。
八、成本与保留策略:钱花在刀刃上
备份不是越贵越好,是按恢复目标(RTO/RPO)来配。给你一套常见档位:每日厂商快照 + rsync 增量,保留 7 天,应对误删和快速回滚;每周整库 dump 加文件归档推对象存储,保留 4 周;每月一次全量镜像导到异地,保留 3 个月。成本粗算:一台 5 美元/月的小备份机 + 几十 GB 对象存储(约几毛到一两美元/月),整套 3-2-1 下来月成本往往不到一顿外卖。
保留策略的核心是"分级":近期副本要能秒级恢复(快照),中长期副本要抗机房灾难(异地云),历史副本要抗逻辑错误(保留几个月的版本,防止"坏数据"被同步覆盖掉好数据)。按业务重要度调密度——个人博客每日足矣,电商和用户数据建议加小时级 binlog 归档。最后一句大实话:备份的花销和它帮你避免的损失比,几乎可以忽略,但"没备份"的代价可能是一个站、一份生意、几年积累。
💡 延伸阅读:关于架构与基础设施的更多深潜指南,请前往 VPS 主题导读中心 (Hub) 获取全盘策略。