Unix

如何從磁帶中解壓縮多個存檔?

  • September 12, 2013

我有一盤磁帶,上面有多個 tar 文件。我不知道有多少(它是由第三方創建並以最少的資訊發送給我的)。如何解壓所有文件而不必重複 tar -xvf /dev/st2 命令 100 次。我需要對 45 個磁帶重複此操作,每個磁帶可能有 100 個文件

如果磁帶機具有非倒帶介面,您可以使用循環來一個接一個地提取文件。

磁帶驅動器名稱的典型範例是: /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.

未經測試的腳本!

引用自:https://serverfault.com/questions/443862