自动增量备份到外部驱动器


8

背景

客户需要对外部驱动器的自动备份解决方案(每周在异地进行)。我通常会建议rsnapshot(或推出一个自定义rsync脚本),但是这个问题要涉及一些。

基于Arch Linux的系统没有头绪,因此该解决方案必须完全自动化,无需用户干预。

理想的情况如下:

  1. 用户插入USB硬盘驱动器
  2. 进行完整的增量备份
  3. 硬盘驱动器已卸载
  4. 通知用户可以拔出硬盘驱动器

提案

我提出的解决方案包括:

  1. 一个udev规则自动安装驱动
  2. 备份开始于:

    1. 相同的udev规则也会触发rsnapshot脚本
    2. 一个inotify的 创建事件检测到新的安装点和触发器rsnapshot
  3. rsnapshot退出,umount是跑在驱动器上

  4. 可以删除通知硬盘的可能方法:

    1. CD驱动器打开
    2. 通过PC扬声器播放声音

如果任何时候发生错误,请向用户发送电子邮件并卸载驱动器。

问题

  1. 我的建议似乎可行,但有明显的缺陷吗?我如何使其坚固?
  2. 为了安全起见,如何确保插入的硬盘是用户的硬盘?ssh钥匙?驱动器标签?
  3. 是否有现有的(Linux)解决方案包含此内容?

Answers:


7

您的解决方案似乎相对合适,但是:

  • 确保rsnapshot脚本不假定知道块设备。理想情况下,通过文件系统的UUID或标签来寻址文件系统,以免造成屠杀。
  • 添加超时。这样,如果发生了我们不知道的错误,或者导致脚本永远无法完成,则可以将其视为错误而不是无限期地继续。
  • 您指出,最后“在任何时候发生错误,向用户发送电子邮件并卸载驱动器” -如果无法卸载驱动器,或者卸载失败,会发生什么?如果电子邮件失败怎么办?确保在您的系统中构建故障保护。
  • 对于基本安全性,UUID应该很好(除非攻击者可能知道您的UUID),但是,如果安全性更重要,请考虑将一些数据写入MBR的代码区(字节0-440),并且在开始备份之前让脚本检查它。应该警告您,通过隐蔽性这比其他任何方式都更安全,但是在这种情况下,我看不到任何易于使用的更好的方法。但是,如果要完全使用,则可以通过分析磁盘上存储的加密证书来确定驱动器是否已授权。什么时候udev如果检测到驱动器,脚本将使用其密钥解密证书。证书包含与驱动器相关的参数,例如驱动器的序列号,型号,容量等,然后将从加密证书中提取的参数与分析驱动器时看到的参数进行比较。如果参数匹配,则确定驱动器为真实驱动器,否则驱动器将被拒绝,脚本将终止。

但是,对于您的特定需求,我认为有一些现有的Linux解决方案属于您,因此最好还是定制一个解决方案,而不是摆弄其他程序的源代码来让它们做您想要的事情。

要将随机数据写入MBR的代码区,然后可以进行检查,请执行dd if=/dev/urandom of=/dev/sdX bs=440 count=1


谢谢克里斯。我不会考虑使用UUID,这大大简化了事情。出于兴趣,您可以共享现有解决方案的任何链接吗?他们可能会给我更多的想法或对其他读者有用。
tlvince 2011年

我以为我想起了一些东西,但现在找不到。不过,这似乎很有趣,也许我会自己发展。我会告诉你。
克里斯·
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.