云服务器备份别只留快照:rsync + crontab 做一份能恢复的异地副本

举报
yd_266847877 发表于 2026/11/09 09:35:27 2026/11/09
【摘要】 很多云服务器只开着自动快照就以为备份做完了。快照恢复整盘确实方便,但它有个短板:快照和云盘在同一个账号、同一个地域里。账号出问题、地域级故障,或者误删后过了快照保留期,数据就真的没了。我的做法是快照照常开,再加一份异地文件级备份,成本很低,恢复时也更灵活。第一步,定备份范围。整盘复制没必要,也费时间。只备份不可再生的东西:网站数据目录、数据库导出文件、Nginx 和应用的配置文件、用户的上传...

很多云服务器只开着自动快照就以为备份做完了。快照恢复整盘确实方便,但它有个短板:快照和云盘在同一个账号、同一个地域里。账号出问题、地域级故障,或者误删后过了快照保留期,数据就真的没了。我的做法是快照照常开,再加一份异地文件级备份,成本很低,恢复时也更灵活。

第一步,定备份范围。整盘复制没必要,也费时间。只备份不可再生的东西:网站数据目录、数据库导出文件、Nginx 和应用的配置文件、用户的上传文件。系统文件、日志、缓存目录一律排除,写一份排除清单单独保存,换机器时照着清单恢复就行。

第二步,用 rsync 做增量同步。第一次全量复制比较慢,之后每天只传改动的部分,1GB 的小内存机器也跑得动。命令里加上 --delete 要格外小心,最好先加 --dry-run 看一遍将要删除的文件,确认无误再去掉 dry-run 真正执行。备份目标可以是另一台便宜的云服务器,或者对象存储挂载的目录,关键是和源站在不同的地域。

第三步,数据库先导出再备份。直接复制正在运行的数据库文件,拷出来的很可能是不完整的。正确顺序是先用 mysqldump 或 pg_dump 导出成 SQL 文件,压缩后放进备份目录,再由 rsync 一起同步。导出脚本里记得把密码放在权限 600 的配置文件里,别写在 crontab 命令行上。

第四步,交给 crontab 每天凌晨跑一次。凌晨业务量小,备份对服务的影响也最小。脚本最后加一行,把本次备份的开始时间、传了多少文件、有没有报错写进日志文件。只看“任务跑完了”不够,要看日志里有没有 error,有一次我就是靠日志发现目标盘满了,备份连续三天传了个空。

第五步,定期做一次恢复演练。备份最怕的是“以为有备份”。每隔一两个月,找一台测试机,把备份目录拉下来,照着恢复步骤把服务跑起来一次,确认网站能打开、数据库能查到最新数据。演练花不了半小时,但能发现备份脚本里早就埋下的问题。

快照管整盘恢复,异地文件备份管数据兜底,两者各司其职。备份的价值不在备份那一刻,而在真要恢复的那天能拿得出来。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。