¿Se puede forzar la salida de tar en el primer error?

¿Se puede forzar la salida de tar en el primer error?

De forma predeterminada, para muchos tipos de errores tarimprime un mensaje en stderr y luego continúa su camino: los errores los llama errores "recuperables", generalmente errores que se relacionan con un solo archivo o miembro del archivo, como problemas de permisos.

A veces este comportamiento es realmente desagradable. Por ejemplo, si estoy descomprimiendo un archivo y el disco está lleno, es posible que obtenga algo como esto:

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

eso puede ocupar miles de líneas en un archivo grande. Si esto sucede en un script, prefiero tarsalir rápidamente para poder darle un mensaje de error al usuario.

¿Hay alguna forma de forzar tarla salida en el primer error que ve? No lo veo en un escaneo de tar --help. Cualquier receta sensata para un script contenedor que logre este propósito también será aceptada con gratitud.

Respuesta1

Una forma es redirigir la salida de error estándar a /dev/full, por ejemplo:

tar ... 2>/dev/full

Esto hará que tar falle cuando intente enviar un mensaje de advertencia a stderr.

información relacionada