4

По умолчанию для многих типов ошибок tar печатает сообщение в stderr и затем продолжает свой путь - ошибки, которые он называет "восстанавливаемыми" ошибками, обычно это ошибки, относящиеся к одному файлу или элементу архива, например проблемы с разрешениями.

Иногда это поведение действительно противно. Например, если я распаковываю архив и диск заполнен, я могу получить что-то вроде этого:

tar: python-lib/PyML/classifiers/ext/_cgist.so: Wrote only 2048 of 10240 bytes
tar: python-lib/PyML/classifiers/ext/_csmo.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_csvmodel.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_knn.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_libsvm.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/_mylibsvm.so: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/cgist.py: Cannot write: No space left on device
tar: python-lib/PyML/classifiers/ext/csmo.py: Cannot write: No space left on device

это может продолжаться тысячи строк в большом архиве. Если это произойдет в сценарии, я бы предпочел, чтобы tar просто быстро завершил свою работу, чтобы я мог дать пользователю быструю ошибку.

Есть ли способ заставить tar завершиться с первой ошибкой? Я не вижу это в сканировании tar --help . Любой вменяемый рецепт сценария-обертки для достижения этой цели также будет с благодарностью принят.

1 ответ1

4

Один из способов - перенаправить стандартный вывод ошибок в /dev/full , например:

tar ... 2>/dev/full

Это приведет к сбою tar при попытке вывести предупреждающее сообщение в stderr .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .