По умолчанию для многих типов ошибок 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
. Любой вменяемый рецепт сценария-обертки для достижения этой цели также будет с благодарностью принят.