如何使用 tar 验证磁带备份?

How do I verify a tape backup with tar?

我正在做一些磁带备份:

mt eom
tar cv Projects*

注意:$TAPE 变量设置为 /dev/nsa0

我想通过 md5sum 验证备份是否已正确完成。因此我可以这样做:

tar cvf test.tar Projects*

并且我想与存储在磁带中的 tar 进行比较。

但是,我不知道如何将磁带中的整个 tar 文件提取到 backupInTape.tar 文件中,这样我就可以:

md5sum test.tar
md5sum backupInTape.tar

这就是我尝试做的类似的事情(在磁带的正确位置,用 tar tv 验证):

tar xv > backupInTape.tar

但它仍然提取所有内容。

我正在使用 FreeBSD 12.1

您可以使用dd命令从磁带中获取数据,例如:

dd if="$TAPE" of=data-from-tape.tar bs=126

检查您的 'tar' 命令的默认块大小,并用它替换 126。我相信 Gnu tar 使用 126,但其他 tar 可能仍默认为 20 或其他。对于某些磁带驱动器,块大小很重要。

另外,参见 https://serverfault.com/questions/293605/check-integrity-of-tar-gz-backup

此外,Gnu tar 可以 --diff 来确认 tar 档案是正确的,一个字节接一个字节。