relleno de alquitrán con ceros

10

Al realizar un tar en un archivo comprimido bz2 me encuentro con el siguiente error,

tar: dump.sql: archivo reducido en 19573448400 bytes; relleno con ceros

¿Alguien puede señalar qué podría estar causando este problema?

Gracias.

Iliyas Shirol
fuente

Respuestas:

8

No es un error Es INFO.

Estoy dispuesto a apostar que está comprimiendo / descomprimiendo una imagen de máquina virtual, o de otro modo archivo escasamente asignado.

Bzip2 ha detectado que el archivo es en su mayoría ceros y lo ha comprimido para que no estén en el archivo comprimido.

Esta es la diferencia entre el tamaño real y el tamaño aparente de los archivos dispersos.

Tom O'Connor
fuente
Encontré un hilo que útilmente corrobora y explica con más detalle
Martin Eden
1
Si no es un error, ¿por qué produce un código de salida distinto de cero?
Ben Collins
En mi caso, el archivo .tar.bz2 en realidad contenía datos corruptos: contenía un montón de bytes NUL en la ubicación indicada en el mensaje, donde se suponía que debía contener datos distintos de cero. No tengo ni idea de porqué. Cuando intenté hacer otro .tar.bz2 de solo ese archivo, funcionó correctamente.
200_success
1
Esto simplemente me sucedió al hacer un archivo de tar sin procesar (no comprimido). Definitivamente no está relacionado con bzip. Y de todos modos, la codificación de longitud de ejecución no es exactamente inusual, por lo que no es algo que bzip moleste en informar.
Wyatt8740
1

Se llamó al archivo en cuestión dump.sql, por lo que probablemente no sea un archivo comprimido bz2. - En cualquier caso, el problema no tiene nada que ver con bz2 o el tipo de contenido del archivo.

El mensaje significa que un stat()archivo en el archivo informó un tamaño diferente que la cantidad que realmente podría leerse del archivo. Esto puede suceder si el archivo se cambió mientras tarfuncionaba.

Esto también ocurre en "archivos virtuales" como los del sistema de archivos Linux / sys. Muchos de ellos se informan con 4096 bytes de tamaño (un valor arbitrario). Una vez read(), solo devuelven un par de bytes.

Robert Siemer
fuente