Unix
如何從磁帶中解壓縮多個存檔?
我有一盤磁帶,上面有多個 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.
未經測試的腳本!