Por defecto, para muchos tipos de errores tar
imprime un mensaje en stderr y luego continúa su camino: los errores que llama errores "recuperables", generalmente errores relacionados con un solo archivo o miembro de archivo, como problemas de permisos.
A veces este comportamiento es realmente desagradable. Por ejemplo, si estoy descomprimiendo un archivo y el disco está lleno, entonces puedo obtener 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 continuar por miles de líneas en un gran archivo. Si esto sucede en una secuencia de comandos, prefiero tar
salir rápidamente para poder dar un error al usuario.
¿Hay alguna forma de forzar tar
a salir en el primer error que ve? No lo veo en un escaneo de tar --help
. Cualquier receta sensata para un script de envoltura para lograr este propósito también sería aceptada con gratitud.
/dev/full
. Consejo útiltar
proceso confirma que continúa alegremente después de cada error de escritura en error estándar. ¿Realmente has probado esta idea? ¿De qué versióntar
?tar
probablemente solo ignora el error. Es necesario que haya una tubería paraSIGPIPE
enviarlatar
en caso de error para eliminarla.