很多站点的备份策略可以用一句话概括:定时任務在跑,文件在生成,没人驗證過。等到真的需要恢复的那天,才發現压缩包打不開、資料库缺了表、或者版本對不上。备份的價值不在于“每天生成一個文件”,而在于“出事时能在可接受的時間内把站点恢复成可用狀態”。
先把“备份什么”列清楚
不同站点的构成差別很大,但基本逃不出這几類:
- 資料库:文章、用戶、评论、配置表大多在這里,通常是最难重建的部分。
- 程序與模板文件:包括自己改過的主题、插件、配置文件。
- 上传目錄:图片、附件、视频等静態资源,体积往往最大。
- 服務器配置:Web 服務配置、定时任務、SSL 證书、环境變量。
- 外部依赖:CDN、對象存储、DNS 解析记錄,這些不在服務器上,但同样需要留档。
如果只备份了資料库,恢复後站点能打開却没有图片;只备份了文件,恢复後内容全是空的。所以第一步是列一張清單,寫清楚每項從哪里取、大概多大、多久變一次。
恢复演练:把备份当成一次真實的搬家
演练不需要動生产环境,可以在本地或一台測試机上做,步骤大致如下:
- 從备份存储里取出最近一次的資料,不要特意挑“看起来最完整”的那份,就用正常流程會取的那份。
- 在干净环境里導入資料库、還原文件,按文档走一遍部署流程。
- 检查首頁、栏目頁、内容頁、搜尋頁能否正常打開,图片和样式是否加载正常。
- 抽查几篇近期發布的内容,確認資料截止時間符合预期。
- 记錄整個過程花了多久,哪些步骤卡住了,哪些命令是临时查的。
演练最大的收获往往不是“备份能用”,而是發現恢复步骤只存在于某個人的脑子里。把它寫成一份能照着做的文档,比多買一块硬盘有用得多。
备份的存放與轮轉
常见做法是保留最近若干天的每日备份、若干周的每周备份,再加一份月度归档。這样既能快速找回“昨天誤删的文章”,也能應對“上個月被改坏的配置”。
存放位置建议至少分两處:一份在服務器本地,方便快速恢复;一份在异地存储或另一台机器上,防止服務器整体故障时全军覆没。需要提醒的是,放在同一台服務器、同一块盘上的备份,遇到磁盘损坏时等于没有。
备份文件本身也可能被誤删或被加密勒索。给备份存储單獨設定權限,避免用日常运维帳號就能直接删掉全部歷史版本。
几個容易踩的坑
- 只备份不检查大小:文件每天生成,但体积長期不變甚至只剩几 KB,很可能是任務早就失敗了。
- 没有失敗告警:定时任務静默失敗是常態,至少让它在出错时發一條通知。
- 备份里混着敏感信息:配置文件、密钥打包在一起,传輸和存放时要注意加密與權限。
- 恢复後忘记收尾:域名解析、證书、定时任務、缓存刷新,這些不在資料里,但一样影响站点能否正常訪問。
和抓取的關系
站点長時間打不開,不只是訪客受影响,搜尋引擎爬虫多次訪問失敗後也會降低来訪频率,恢复後需要一段時間才能回到原来的抓取节奏。把故障恢复時間從“天級”压到“小时級”,本身就是在减少對站点長期表現的影响。
小结
备份是一項平时看不出價值、出事时决定生死的工作。定期做一次真實演练,把恢复步骤寫下来,確認备份文件能打開、資料完整、异地有副本,這几件事做完,站点运营的底就稳了一大半。