如何从磁带解压多个档案?

如何从磁带解压多个档案?

我有一盘磁带,上面有多个 tar 文件。我不知道有多少个(它是由第三方创建的,发送给我的信息很少)。如何解压所有文件,而不必重复 tar -xvf /dev/st2 命令 100 次。我需要对 45 盘磁带重复此操作,每盘磁带可能有 100 个文件

答案1

如果磁带驱动器具有非倒带接口,则可以使用循环逐个提取文件。

磁带驱动器名称的典型示例是: /dev/rst2用于对倒带 SCSI 磁带驱动器的原始访问,以及/dev/nrst2/或者/dev/tape/nrst2用于不倒带的同一设备(倒带

这可以与 tar 的退出代码结合使用。与所有 unix 程序一样,退出代码 0 表示“成功,没有问题”。

你可以在 shell 中使用一个有点丑陋的一行程序:
while (! tar -xf /dev/nst0 ) echo "Another file done. Repeating for the next one!"

或者编写一个更简洁的程序:

#!/usr/bin/env bash
return_value=0
counter=$1
while [ return_value -eq 0 ]
do
   echo starting on file number $1
   return_value=$(( tar -xf /dev/nst0 ))
   echo file nu,ber $1 extracted from tape.
   counter=$(( $counter + 1 ))
done
echo Reached end of tape or tar returned an error.
echo exiting.

未经测试的脚本!

相关内容