У меня есть основное резервное копирование для записи на ленту сценария и сценария восстановления, который был записан предыдущим администратором. При попытке восстановить от ленты, я получаю следующую ошибку:
tar: v: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
Я попытался выполнить команды вручную для ввода в путь восстановления: tar -xfv /dev/st0 /srv
Я также попытался восстановить к обходным путям, все, что дает то же сообщение об ошибке. Ниже резервное копирование и восстанавливает сценарии. Любая справка, определяющая, что моя проблема, значительно ценилась бы.
Вот резервный сценарий:
echo Starting backup to tape at `date`
mt -f /dev/st0 rewind
tar cfv /dev/st0 /srv
mt -f /dev/st0 eject
echo Backup to tape complete at `date`
exit
Вот сценарий восстановления:
echo -n Starting restore from tape at `date` to directory: `pwd`
mt -f /dev/st0 rewind
tar -xfv /dev/st0
echo Restore from backup complete at `date`
exit
Опции команды tar являются неправильными в сценарии восстановления. Это работает:
tar xfv /dev/st0
единственной разницей являются пропавшие без вести минус, однако который довольно важен. При использовании '-', тогда Вы используете обычный синтаксис опций GNU. В этом случае 'f' опция должна сопровождаться именем файла. В Вашем сценарии 'f' сопровождается единственной буквой 'v'. Таким образом, tar пытался извлечь из файла, названного 'v'. Который не существует, как правильно говорится в сообщении об ошибке.
, Если первый аргумент не запускается с '-', чем Вы используют старый, но довольно удобный синтаксис tar. В этом случае обязательные аргументы опций следуют, все устанавливают из опций. Теперь 'v' означает подробный, как ожидалось, и исходный файл является ленточным накопителем (/dev/st0), как ожидалось.
Из документации tar GNU в http://www.gnu.org/software/tar/manual/tar.html#SEC36 :
, Насколько мы знаем, все программы tar, GNU и не-GNU, поддерживают старые опции: то есть, если первый аргумент не запускается с '-', он, как предполагается, определяет буквы опции. Tar GNU поддерживает старые опции не только по историческим причинам, но также и потому что многие люди привыкли к ним. Если первый аргумент не запускается с тире, Вы объявляете о старом стиле опции вместо короткого стиля опции; старые опции декодируются по-другому.
Как короткие опции, старые опции являются одними буквами. Однако старые опции должны быть записаны вместе как единственный собранный в группу набор, без пробелов разделив их или тире, предшествующих им. Этот набор букв должен быть первым для появления на командной строке после названия программы tar и некоторого пробела; старые опции не могут появиться больше нигде. Буква старой опции является точно той же буквой как соответствующая короткая опция. Например, старая опция 't' совпадает с короткой опцией '-t', и следовательно, то же как долгая опция '-список'. Так, например, команда 'условная цена tar' определяет опцию '-v' в дополнение к операции '-c'.
, Когда опции, для которых нужны аргументы, даны вместе с командой, все связанные аргументы следуют в том же порядке как опции. Таким образом пример, данный ранее, мог также быть записан в старом стиле следующим образом:
tar cvbf 20/dev/rmt0
$ Здесь, '20' является аргументом '-b', и '/dev/rmt0' является аргументом '-f'.