用GPGencryption备份到多个磁带

目前,我使用tar将我的备份(ntbackup文件)写入由自动加载器提供的磁带驱动器。

例如: tar -F /root/advancetape -cvf /dev/st0 *.bkf (/ root / advancetape只是有一个可用的磁盘或通知交换磁带时前进到下一个磁带的逻辑)

我最近递交了要求encryption我们的磁带备份。 我可以轻松地使用GPGencryption数据,而不会出现任何问题。 我遇到的问题是,如何使用与tar相同的逻辑将其写入多个磁带,以便在当前磁带被填满后用于提前磁带? 我无法将encryption文件先写入磁盘(2 + TB)。 据我所知,tar不会接受来自stdin的二进制input(它正在寻找文件名)。 有任何想法吗? 🙁

我build议你看看这个选项:

  -I, --use-compress-program PROG filter through PROG (must accept -d) 

您可能需要编写一个脚本,它接受来自stdin的input并将其encryption到stdout,但它应该可以工作。 -d用于解压缩,在这种情况下,您需要解密input。

我正在使用这个脚本:

 #!/bin/sh TAPE="/dev/nst0" mt-st -f $TAPE setblk 0 mt-st -f $TAPE status totalsize=$(du -csb . | tail -1 | cut -f1) tar cf - . | \ gpg --encrypt --recipient [email protected] --compress-algo none | \ pipemeter -s $totalsize -a -b 256K -l | \ mbuffer -m 3G -P 95% -s 256k -f -o $TAPE \ -A "echo next tape; mt-st -f $TAPE eject ; read a < /dev/tty" 

为了适应您的需求,这里是要点:

  • tar从当前目录读取并输出到stdout 。 这种方式焦油不涉及改变磁带或encryption。
  • gpg已closures压缩,因为这大大降低了处理速度(100MB /秒+下降到5MB /秒)
  • pipemeter是用来监视过程,并给出估计的时间,直到所有的数据已被写入磁带 – 这可以删除,如果不需要
  • mbuffer将数据缓冲到内存中 – 这个例子使用了一个3GB的缓冲区,根据需要进行调整,以便磁带驱动器运行更长的时间,然后用完数据,从而减less磁带的“擦鞋”。
  • mbuffer-A选项在mbuffer通过popup磁带来处理多个磁带,并在加载下一个磁带之后等待Enter键的按下。 这是你的/root/advancetape脚本可以去的地方。

在使用LTO磁带时需要注意的一个问题是:

  • 磁带块大小设置为可变, mbuffer以256k块写入。 LTO3驱动器适用于我,但是tar喜欢使用不同的块大小。 这与mbuffer处理跨越磁带而不是tar的事实相结合,意味着你将需要通过mbuffer再次从磁带读取数据,然后通过gpg传递给tar 。 如果你试图用tar直接从磁带上提取它(即使你跳过encryption),它可能不会工作,一旦到达第一个磁带的末尾,它肯定会中断,而不会让你有机会改变下一个磁带。

你可以在你的-F脚本中实现这个function。 tar不直接写入/ dev / st0,而是使用临时登台区域。 确保使用-L显式指定卷大小。 焦油将写入到文件的数据字节,然后调用你的-F脚本。 然后你的脚本就可以在文件上运行gpg并将其发送到磁带(然后从暂存区删除归档部分)。

这只需要在文件系统上有一个磁带值(x2)可用空间。

请参阅http://www.gnu.org/software/tar/manual/html_node/Multi_002dVolume-Archives.html#SEC162了解有关-F脚本可用variables的更多信息&#x3002;

编辑:另外请注意,这是一个完全未经testing的想法! 我一直在想做这样的事情,以提供压缩多卷存档,但我没有实际执行它。