我在这件事上拖过很久。
不是因为不会。恰恰是因为太简单了——简单到总觉得"明天弄",然后明天变成下个月,下个月变成"等换新硬盘的时候一起弄"。
真正让我动手的是一次很小的意外:某次清理目录,rm -rf 后面少打了个斜杠,一个项目的两年历史没了。不算致命,因为代码在远端仓库还有一份。但那个瞬间我出了一身冷汗——如果那是照片呢?如果那是我手写的笔记呢?
一个够用的原则#
备份这件事,网上有个流传很久的原则,大意是:三份副本,两种介质,一份异地。
我觉得不用背,理解意思就行:别让同一次事故能同时干掉你家所有的数据。硬盘坏、误删、勒索软件、房子漏水——这几种事发生的范围和方式完全不一样,你的副本至少要能挡住其中大多数。
具体到我这儿:
- 日常文件在本地硬盘;
- 重要的同步一份到移动硬盘,定期插上;
- 最要紧的那一小部分(笔记、文档、项目源码)再传一份对象存储或者远端仓库。
顺序有讲究。越往下,成本越高、频率越低,但也越不可能跟本地一起没。
比备份更重要的是"恢复"#
这一点我以前没当回事。
备了三年,从来没试过还原一次。这种情况比没有备份更危险——因为你会有虚假的安全感,还会在出事的时候才发现打包脚本有问题、文件其实压根没传上去、压缩包是 0 字节。
所以现在我给自己加了一条:每隔一段时间,从备份里随手抽一个文件恢复出来,打开看看内容对不对。
不用多复杂,抽一个就够。这个动作花不了三分钟,但它能立刻告诉你备份到底是活的还是死的。
文本的好处#
意外之后我更喜欢纯文本了。
Markdown、代码、配置文件,这些不依赖任何特定软件的格式,十年后拿记事本也能打开。同步、diff、版本控制全都有现成工具,出错了也看得见。
反过来,那些存在某个应用里的"富内容",格式不透明,导出功能往往还是残的(付费才能导出全部,这种设计你肯定见过)。你把东西存进去的时候很舒服,想拿出来的时候才发现门是单向的。
这个博客也一样。所有文章都是 .md 文件,放在本地目录里,哪天这个站不做了,整个目录拷走就完了。反而是那些"存在平台里"的博客,一旦平台改规则、涨价、或者关停,你的东西就在别人的硬盘上,按别人的心情保存。
最后#
备份这件事没有做完的一天,只有"最近一次验证是什么时候"。
如果你现在回想一下,想不起来上次验证是什么时候——那就现在抽一个文件恢复一下。三分钟,比什么都强。