最近突然想起来,一个线上应用以前因为有代码级别的定时备份机制,每天会定时备份重要数据然后发邮件到我的邮箱。但是,后面因为代码重构觉得恢复数据也比较麻烦就丢弃了,一直没有补回来备份的措施,你看最近某个云的事情搞了一波之后,吓得我赶紧趁着还有点时间,就补救一下。这次我决定不在代码层级搞了,直接简单粗暴一些,使用 Crontab 定时执行脚本的方式,然后远程拷贝的目标主机(这种方式以前搞计算广告的时候也是这么操作的,不过会加上一些保证机制)。

因为这个应用使用的是 MongoDB,所以我就直接使用 mongodump 就好了,统计了一番,数据量也不大,压缩完 100M 左右,也可接受吧。所以下面就先看下 Crontab 的命令怎么写:

15339884435172

这里简单说一下,首先设置了一个 survival 的保存期限,我预期是 31 天,也就是保留一个月的数据,然后先 dump 下来,dump 完之后再打包压缩,压缩完之后就拷贝到备份服务器保存。是的,这里不对备份服务器进行删除,备份服务器的空间大着呢。放个几年不删除都问题不大(话说几年也占用不了多少空间啊)。

看上去似乎可以了,但是这也只是个备份的脚本,没法定时执行啊,所以还是得设置一下 Crontab,老朋友了。编辑也很简单,直接使用 crontab -e 即可进入编辑页面,这里我已经编辑过了,直接看结果吧:

也就是每天早上 6 点我准时备份一个,哈哈,美好的一天从清晨开始!

Final

这里其实可以有更好的处理方式,那就是如果你没有自己的备份服务器的话,可以选择一些网盘定时保存到网盘中也是不错的选择。