Назад | Перейти на главную страницу

Как распаковать несколько архивов с ленты?

У меня есть лента с несколькими файлами 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.

Непроверенный скрипт!