每周日凌晨三点半
站点上线以后,我给自己安排了一件每周都要发生一次的小事:备份。写这篇的时候它已经跑了一段时间,中间出过岔子,也补过课,正好整理一下。
备份这件事,做得好的时候没人记得,做砸的时候人人记得。而它的价值不在于“我做了备份”,在于“我真能把东西恢复回来”。
一开始,我觉得小站没什么好备份的
刚上线那阵子我的想法很朴素:一个自己写着玩的个人站,几个页面几张图,真要坏了,重新弄一遍不就完了。这种想法一直持续到某天下午——我在改一个页面的排版,改完刷新觉得不对劲,想退回去,然后愣住了:改之前长什么样,我一点都不知道。
没有副本,没有历史,连“昨天那份”都不存在。我能做的只有凭记忆一点点往回改,改到差不多能看为止。那次损失不大,但那种手里没有退路的感觉挺难受的。当天晚上我就去查,怎么给站点做一份自动备份。
我现在的做法:周日凌晨自动跑一次
做法说出来没什么技术含量,就是三步:
- 先在服务器上把站点目录打包成一个压缩文件;
- 脚本连上去,把这个包拉回我本地一份;
- 本地保留最近八份,更早的自动清掉。
时间定在周日凌晨三点半,理由很实际:那时候没人访问,打包占点资源也无所谓,就算把服务器拖慢几分钟,也不会影响到谁。放在白天我总担心影响别人打开页面,反而容易拖成“等有空再说”,然后就一直没有空。
整个流程是计划任务触发的,不需要我记得这件事。这一点挺重要——凡是需要我“想起来才做”的事情,到头来基本都会变成不做。
存别处,还要留多份
先说存放的位置。我一开始图省事,把包留在服务器上,觉得反正也在那儿,随时能拿。后来想明白一个很简单的道理:如果备份和原文件躺在同一台机器上,那它俩是同生共死的。硬盘坏了、系统重装、手滑删错目录,备份跟着一起没。它防得住“我改错了”,防不住“机器没了”。
所以现在备份的终点是我本地这台电脑。存在别处,才算备份;存在原地,那只是同一份文件的另一个名字。
再说留几份。只保留一份“最新备份”,其实约等于没有历史。因为最常见的坏情况不是整个站没了,而是我这两周改坏了一个页面,想退回上周那个版本。如果手上只有今天的一份,那它跟服务器上现在的状态差不多,救不了我。
所以每次打包都生成一个新的文件名,按日期排,不覆盖上一份,本地留最近八份。八份大概是两个月的回溯空间,对我来说够用了。名字里带上日期还有个好处:真要恢复的时候不用去猜哪个文件更新,看名字就知道。顺带一提,清理老备份的时候我只删自己确认过的那些,删之前先看一眼文件名里的日期,别把刚拉回来的那份误伤了。
没恢复过的备份,只是心理安慰
这是我最想强调的一点。备份文件安安静静躺在目录里,看着特别让人安心,但“文件在”和“我能把它放回去”是两件完全不同的事。我第一次做恢复演练就卡住了:包在,本地也有,然后我发现自己不知道该把它解开到哪里、该覆盖哪些东西、服务器上要不要先停一下。
演练时踩到的坑也挺典型。备份是“先在服务器上打包、再传到另一套系统”的,解压的时候就遇到过换行符、文件权限、编码对不上的问题——同一个压缩包,在原来的系统上一切正常,换个环境解出来,文件名和里面的内容就可能不对劲。这些毛病平时完全看不出来,只有真的解一次才会暴露。
我的办法很土:找一个不重要的目录,把最近的一份备份真的还原一遍,然后打开页面看看正不正常。整套流程走通一次,心里就有底了;走不通,那正好,说明现在发现比以后发现划算。我后来把演练简化成几个固定动作,每次照着做:
- 把最近一份备份解开到一个空目录,别直接覆盖正在用的东西;
- 数一下文件数量对不对,有没有明显缺的目录;
- 随便打开两个页面,看看样式和图片是不是都在;
- 确认没问题,再决定要不要真的换回线上那份。
这里面最容易被忽略的是第一步。很多人(包括当时的我)第一反应是直接往原地覆盖,万一解出来的东西不完整,那就等于把好的也弄坏了。先解到别处看一眼,成本很低。
真正麻烦的,是它悄悄不跑了
定时任务最坑的地方不是报错,而是无声无息地停掉。它某天因为一个很小的原因没跑成——网络不通、连接信息过期、脚本里某个路径变了——然后接下来的每个周日它都继续不跑,而且一声不吭。等我哪天想起来去看,最近的一份备份可能已经是三个月前的了。
我现在的对策是让它每次跑完都往同一个日志文件里写一行:几点跑的、成没成、包有多大。我不用天天盯着,偶尔顺手翻一眼最近几行,看到时间是新的、状态是正常的,就放心了。那行字本身不值钱,值钱的是它能证明“备份这件事今天还在发生”。
说句实话
我这套东西一点都不高级,没有异地机房,没有复杂的校验,就是打包、拉回来、留八份、偶尔看一眼日志。但它做到了四件事:自动跑,不用我记得;存在别的机器上;留了多份,能往回退;而且我真的完整恢复过一次。能凑齐这四条,就已经比大多数人的备份方案靠谱了。
你要是也想给自己的小站做一份,建议从最小的一步开始:先让它自动跑起来,哪怕只是每天把目录打包、存到另一台机器上。等哪天真用上它的时候,就会知道那点折腾是值得的。备份方案不用复杂,能自动跑、存在别处、留多份、演练过一次,就够用了。
本文写于2026-09-10,记录的是当时的情况与做法,未必适用于所有环境,仅供参考。