У меня есть лента с несколькими файлами tar. Я не знаю, сколько (оно было создано третьей стороной и отправлено мне с минимальной информацией). Как мне распаковать все файлы, не повторяя команду tar -xvf / dev / st2 100 раз. Мне нужно повторить это для 45 лент, каждая из которых может содержать 100 файлов.
Если ленточный накопитель имеет интерфейс без перемотки, вы можете использовать цикл для извлечения одного файла за другим.
Типичные примеры имени ленточного накопителя: /dev/rst2
для прямого доступа к перематывающему устройству SCSI, и /dev/nrst2
или /dev/tape/nrst2
для того же аппарата без перемотки (не перемотка)
Его можно комбинировать с кодом выхода из tar. Как и все программы Unix, код выхода 0 означает «успех, никаких проблем».
Это вы можете использовать несколько уродливый лайнер в оболочке:
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.
Непроверенный скрипт!