备份这件事的麻烦之处在于:做对了没有反馈,做错了要等到出事那天才知道。而那天通常是网站被黑、数据库损坏、误删了整张表。
只备文件是不够的
一套完整的网站至少有三块:程序文件(含主题、插件、上传的图片附件)、数据库(文章、用户、订单、设置)、以及配置(服务器配置、环境变量、证书私钥)。
只打包了网站目录、没导数据库,恢复出来是一个空壳:页面在,内容全没了。反过来只导数据库,图片全丢,页面上全是裂图。这两样必须一起备,而且要在同一个时间点,否则数据对不上。
3-2-1 这条老规矩
三份副本、两种不同存储介质、一份放在异地。听起来复杂,实际落地很简单:服务器本地一份、对象存储或另一台机器一份、再加一份下载到自己电脑或网盘。
重点是最后那份异地。把备份目录放在网站根目录下面,是最典型的错误——一旦整台机器被清空或账号被盗,备份跟着一起没。
快照不是备份
云服务器的快照很方便,一点就回滚,但它和服务器在同一个账号、同一套权限下。勒索软件加密了数据,快照可能也被一并处理;账号被盗,对方能删掉你能看到的一切。
快照用来应对"改坏了想回退",备份用来应对"东西没了",两个都要有,不能互相替代。
频率和保留周期
内容站每周一次全量、每天一次数据库增量就够;有交易和会员的站要每天全量,订单数据最好再做一次异地同步。保留至少 30 天,因为有些入侵是潜伏型的,等你发现异常时,最近的备份里已经有了后门。
备份没验证过,就等于没有
备份做到最后,比的不是备份频率,而是你敢不敢现在就把网站删了,用它恢复回来。
机房师傅常挂在嘴边的话
做法很朴素:每季度挑一次备份,在测试环境里完整还原一遍,确认数据库能导入、图片能显示、后台能登录。这个过程一定会暴露问题——压缩包损坏、数据库版本不兼容、漏了某个目录,早发现比晚发现好得多。
再往前一步,就是自动化。写个脚本打包并上传到异地,配上定时任务,再让它在失败时给你发条通知。备份只有变成没人管也会自己跑的东西,才真正靠得住。