我有一盘磁带,上面有多个 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.
未经测试的脚本!