De forma predeterminada, para muchos tipos de errores tar
imprime 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 tar
salir rápidamente para poder darle un mensaje de error al usuario.
¿Hay alguna forma de forzar tar
la 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
.