Можно ли принудительно завершить работу tar при первой ошибке?

Можно ли принудительно завершить работу tar при первой ошибке?

По умолчанию для многих видов ошибок 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

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

tar ... 2>/dev/full

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

Связанный контент