如何最轻松地进行永无止境的增量脱机备份
Posted
技术标签:
【中文标题】如何最轻松地进行永无止境的增量脱机备份【英文标题】:How to most easily make never ending incremental offline backups 【发布时间】:2013-08-04 16:16:33 【问题描述】:一段时间以来,我一直在想我可以通过制定这个备份方案来节省一些外部硬盘驱动器的钱:如果我有 3TB 数据要备份,从一个备份到下一个备份的变化不到 1TB,我总是希望有1个副本出门,3个2TB外置硬盘应该够用了。这个想法是,每次使用磁盘进行备份时,它都会被完全填满 - 然而,完整备份永远不会成为 3TB>>2TB。
因此,备份从使用 2TB 数据填充磁盘 1 开始。然后用disk2填充1TB数据和1TB冗余数据,因为它也存在于disk1上。现在disk1和disk2可以带出家门了。
进行下一次备份时,disk2 已经包含 2TB 的数据,其中至少 2TB-1TB=1TB 仍然有效,因为只有 1TB 有更改。因此,通过将 2TB 的数据(其中一些数据也可能存在于 disk2)备份到 disk3,我们在 disk2+disk3 上获得了完整的备份。现在可以将disk3移出,disk1可以移回、删除并重新用于备份。
这当然可以做得更好,这样我们就可以使用不同大小的磁盘,拥有不同数量的磁盘,对外出副本的数量有更高的要求等等。
理论上,通过存储所有磁盘上哪些文件的校验和很容易做到这一点,因此我们可以通过检查校验和来检查更改。
但实际上有很多情况需要处理:磁盘空间不足、硬链接、软链接、文件权限、文件所有权等。
我已尝试找到可以执行此操作的现有备份程序,但没有找到。
所以我的问题是:我如何最轻松地做到这一点?从头开始编写它可能会花费太多时间。所以我想知道我是否可以把它放在现有的东西之上。有什么想法吗?
【问题讨论】:
这是一个很好的问题,但恐怕你发错了地方。如果其他人同意在这里关闭它,请不要担心,它属于超级用户,因为它不是编程问题。 好吧,我明白你的意思了。如果我必须对其进行编程,这只是一个编程问题 - 那么问题是使用哪些库或其他什么来尽可能快地实现它。如果我不必编程,它就不属于这里。 使rsync
定期运行到cron
rsync 不行。不进行备份时磁盘处于脱机状态
【参考方案1】:
如果我处于你的位置,我会buy an external hard drive 足够大,可以容纳你的所有数据。
然后编写一个 Bash 脚本:
-
安装外置硬盘
执行
rsync
以备份所有已更改的内容
卸载外置硬盘
给我发消息(电子邮件或其他),让我知道备份已完成
因此,您需要插入外部驱动器,执行 Bash 脚本,然后将外部硬盘驱动器返回到银行(或其他类似安全位置)的保险箱。
【讨论】:
我需要 2 个磁盘,因为其中一个总是必须在外面。这当然是一种选择,但另一种方式是我不必购买我真的不需要的硬件。这是我迄今为止所做的——虽然不是使用 rsync 和电子邮件。随着数据量的增加,我最终会拥有大量无法备份的外部驱动器。 @AndersBoRasmussen 如果您坚持使用多个磁盘,我唯一能想到的就是想出某种涉及 LVM 和 rsync 的方案。以上是关于如何最轻松地进行永无止境的增量脱机备份的主要内容,如果未能解决你的问题,请参考以下文章