备份这件事,多数站长都做过,但做和做对之间差得很远。最常见的状态是:定时任务每天早上把数据库导出一份,存到服务器上的某个目录里,日志显示成功,人也踏实了。直到某天那台机器出了事,硬盘坏了、系统被勒索加密了、或者自己手滑删错了目录,你才反应过来,备份和被备份的东西,从始至终都在同一块盘上,一起没了。这种安排给人的踏实感是假的,因为它从来没有把本机故障这一种情况考虑进去,而本机故障恰好是最常见的那一类。真正可靠的备份,从设计的第一天起就要假设这台机器会彻底消失。
这不是个别现象,是整个行业反复提醒的老问题。美国网络安全和基础设施安全局在给中小机构的备份指南里推荐的,是流传很广的3-2-1规则:重要文件保留3份副本,存放在2种不同的存储介质上,其中1份放在异地。这三句话读起来简单,它针对的恰好是三种不同的失效方式:单份副本会丢,同一块盘会一起坏,同一个地点会一起没。三份副本里有一份是生产数据本身,另外两份才是备份。它的好处是把抽象的备份概念拆成了几条可以逐项检查的动作,哪一条没做到,一眼就能看出来。
同一种介质,最容易一起坏
为什么强调两种介质?因为同一种技术往往有相同的失效模式。整套磁盘阵列可能因为固件问题一起掉线,一批硬盘可能来自同一个有缺陷的批次。把一份放在本地磁盘、一份放到云上的对象存储,等于让两边的故障彼此独立,一边出事另一边还站着。介质不同,才是真正意义上的两份,而不是同一块盘上的两个文件夹——后者看着是两份,其实是同一份的两个名字。判断介质是否真的不同,可以问自己一句:会不会因为同一个原因同时失效。答案是不会,才算数。把两份备份放在同一台机器的两块盘上,看着是两份,实际是一份。
异地那一条,才是真正救命的
三条里最容易被省略的是异地。原因也好理解:本地复制最快、最方便、还免费,而异地意味着要把数据传出去、要花钱、要配置,处处都添麻烦。正是因为麻烦,绝大多数人的备份方案在第一步就停住了,剩下的两条永远留在计划里。但恰恰是这一条,决定了火灾、水淹、整机被偷这类事情发生时,你还剩不剩得下东西。更进一步说,现在的勒索攻击往往会先找备份再加密,如果备份就在同一张网里、用同样的账号就能访问,它和你的业务数据是同时被拿下的。备份一旦和业务同生共死,它就不再是备份,只是多做了一份复制。
所以更新的做法会在异地之外再加一条:让那份离线副本变成改不了、删不掉的。常见形态有两种,一种是写进去之后在保留期内无法修改或删除的存储,另一种更土但同样有效,就是一块拔下来放在抽屉里的硬盘,物理上断开了连接。这类离线副本的缺点是不方便、恢复慢,但正因为不方便,它才不容易被顺手破坏。原则是一致的——当攻击者拿到了你的管理员权限,他依然碰不到那一份。备份的价值不在于你平时能不能读它,而在于出事的那一天它还在不在。很多人是遭遇过一次之后,才把这一条从可以为省则省调到不能省。
备份成功不等于能恢复
还有一层更隐蔽的问题:任务显示成功,不等于数据能用。导出过程被中断、文件只写了一半、权限没设对读不出来,都可能让一份备份在事后看起来完整、实际却恢复不出来。破解办法只有一个——定期真的恢复一次。挑一台干净的测试机,把最近的备份导进去,看服务能不能正常起来,数据对不对得上。演练要覆盖完整的恢复路径,从拿到备份文件开始,一直到站点重新对外提供服务为止。演练一次的成本很低,而它暴露的问题,往往是你在真正需要恢复的那一天才会被迫发现的。恢复演练不只是验证备份,也是在验证你有没有能力在压力下把整套流程走对。
备份方案说白了就三句话:多留几份,分开介质,挪一份到别处,然后再定期证明它真的能用。这四件事没有一件是难做的,难的是在一切正常的时候还愿意去做——故障没来的时候,备份永远是最没有回报的投入。它只在极少数时刻发挥作用,而那正是所有准备都失去意义的时刻。硬盘不会提前通知你它哪天坏,账号也不会提醒你它哪天被盗。你今天花在把一份备份传出去上的那几十分钟,换的是将来某一天你还有东西可恢复。这件事没有捷径,也没有可以外包的部分,它靠的只是把该做的动作重复做下去。等到真的需要用它的那天才想起去配,通常已经晚了。
申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!
