目前,我使用 tar 将我的备份(ntbackup 文件)写入由自动加载器馈送的磁带驱动器。
例如:
tar -F /root/advancetape -cvf /dev/st0 *.bkf
(/root/advancetape 仅具有前进到下一个磁带(如果有可用磁带或通知换出磁带)的逻辑)
我最近接到了加密磁带备份的要求。我可以使用 GPG 轻松加密数据而没有问题。我遇到的问题是如何将其写入多个磁带,其逻辑与 tar 在当前磁带被填充后用于推进磁带的逻辑相同?我无法先将加密文件写入磁盘(2+TB)。据我所知, tar 不会接受来自标准输入的二进制输入(它正在寻找文件名)。有任何想法吗?:(
我正在使用这个脚本:
为了适应您的需求,以下是要点:
tar
从当前目录读取并输出到stdout
. 这种方式 tar 不处理更改磁带或加密。gpg
已关闭压缩,因为这会大大减慢进程(100MB/秒+ 降至 5MB/秒)pipemeter
用于监视过程并给出估计的时间,直到所有数据都写入磁带 - 如果不需要,可以将其删除mbuffer
将数据缓冲到内存中 - 此示例使用 3GB 缓冲区,根据需要进行调整 - 以允许磁带驱动器在数据用完之前运行更长时间,从而减少磁带的“擦鞋”。-A
选项mbuffer
通过在到达末尾时弹出磁带并在加载下一个磁带后等待Enter
按下键来处理多个磁带。这是你的/root/advancetape
脚本可以去的地方。将其与 LTO 磁带一起使用时需要注意的一个问题:
mbuffer
写入 256k 块。这对我来说很适合使用 LTO3 驱动器,但tar
喜欢使用不同的块大小。mbuffer
这与处理跨磁带而不是跨磁带的事实相结合tar
,意味着您将需要再次从磁带读取数据mbuffer
,然后将其传递gpg
到tar
. 如果您尝试使用tar
(即使您跳过加密)直接从磁带中提取它,它可能无法正常工作,并且一旦到达第一个磁带的末尾肯定会中断,而不会让您有机会更改到下一个磁带。我建议你看看这个选项:
您可能需要编写一个脚本,从标准输入获取输入并将其加密到标准输出,但它应该可以工作。-d 用于解压缩,在这种情况下,您需要对输入进行解密。
您可能会在您的 -F 脚本中实现这一点。不要让 tar 直接写入 /dev/st0,而是使用临时暂存区。确保使用 -L 明确指定卷大小。Tar 会将最多字节的数据写入文件,然后调用您的 -F 脚本。然后,您的脚本可以在文件上运行 gpg 并将其发送到磁带(然后从暂存区域中删除存档部分)。
这只要求您的文件系统上有一个磁带的价值 (x2) 可用空间。
有关可用于您的 -F 脚本的变量的更多信息,请参阅http://www.gnu.org/software/tar/manual/html_node/Multi_002dVolume-Archives.html#SEC162。
编辑:另请注意,这是一个完全未经测试的想法!我一直在考虑做这样的事情来为多卷档案提供压缩,但我还没有真正实现它。