Scroll to navigation

bzip2(1) General Commands Manual bzip2(1)

NOMBRE

bzip2, bunzip2 - un compresor de ficheros por ordenación de bloques, v1.0.8
bzcat - descomprime ficheros hacia la salida estándar
bzip2recover - recupera datos desde ficheros bzip2 dañados

SINOPSIS

bzip2 [ -cdfkqstvzVL123456789 ] [ ficheros ... ]
bzip2 [ -h|--help ]
bunzip2 [ -fkvsVL ] [ ficheros ... ]
bunzip2 [ -h|--help ]
bzcat [ -s ] [ ficheros ... ]
bzcat [ -h|--help ]
bzip2recover fichero

DESCRIPCIÓN

bzip2 comprime ficheros utilizando el algoritmo de compresión de texto por ordenación de bloques de Burrows-Wheeler. Generalmente, la compresión obtenida es considerablemente mejor que la de compresores más convencionales basados en LZ77/LZ78, y se aproxima al rendimiento de la familia PPM de compresores estadísticos.

Las opciones de la línea de órdenes son deliberadamente muy similares a las de GNU gzip, pero no son idénticas.

bzip2 expects a list of file names to accompany the command-line flags. Each file is replaced by a compressed version of itself, with the name "original_name.bz2". Each compressed file has the same modification date, permissions, and, when possible, ownership as the corresponding original, so that these properties can be correctly restored at decompression time. File name handling is naive in the sense that there is no mechanism for preserving original file names, permissions, ownerships or dates in filesystems which lack these concepts, or have serious file name length restrictions, such as MS-DOS.

Por defecto, bzip2 y bunzip2 no sobreescribirán ficheros existentes. Si quieres que esto ocurra, especifica la opción -f.

Si no se especifica el nombre de ningún fichero, bzip2 comprimirá desde la entrada estándar hacia la salida estándar. En este caso, bzip2 se negará a escribir la salida comprimida hacia una terminal, ya que ésta sería totalmente incomprensible y por lo tanto inútil.

bunzip2 (o bzip2 -d) descomprime todos los archivos indicados. Aquellos que no hayan sido creados con bzip2 no se procesarán emitiéndose un mensaje de advertencia. bzip2 trata de averiguar el nombre del archivo descomprimido a partir del comprimido del siguiente modo:


filename.bz2 pasa a llamarse filename
filename.bz pasa a llamarse filename
filename.tbz2 pasa a llamarse filename.tar
filename.tbz pasa a llamarse filename.tar
anyothername pasa a llamarse anyothername.out

Si el archivo tiene una de las extensiones conocidas: .bz2, .bz, .tbz2 o bien .tbz, bzip2 indicará que no puede adivinar el nombre del archivo original y empleará el nombre completo del mismo añadiéndole la exensión .out.

Al igual que para la compersión, si no se indica ningún nombre de archivo se intentará descomprimir la entrada estándar enviando el resultado por la salida estándar.

bunzip2 descomprimirá correctamente un fichero que sea la concatenación de uno o más ficheros comprimidos. El resultado es la concatenación de los correspondientes ficheros descomprimidos. Con (-t) se puede comprobar la integridad de ficheros concatenados comprimidos.

También se pueden comprimir o descomprimir ficheros a la salida estándar utilizando la opción -c. Múltiples ficheros pueden ser comprimidos y descomprimidos de esta forma. Las salidas resultantes van siendo pasadas secuencialmente hacia la salida estándar. La compresión de múltiples ficheros de esta manera genera un flujo que contiene múltiples representaciones de ficheros. Tal flujo solo puede ser descomprimido correctamente por la versión 0.9.0 o superior de bzip2; versiones anteriores de bzip2 pararán tras descomprimir el primer fichero del flujo.

bzcat (o bzip2 -dc) descomprime todos los ficheros especificados hacia la salida estándar.

bzip2 considera los argumentos de las variables de entorno BZIP2 y BZIP en ese orden, procesándolos antes de los argumentos indicados por el usuario en la línea de órdenes. Esta es la forma adecuada para indicar argumentos por defecto

La compresión siempre se realiza, incluso aunque el fichero comprimido sea ligeramente mayor que el original. Los ficheros de menos de cien bytes tienden a hacerse más grandes, ya que el mecanismo de compresión tiene una sobrecarga constante de unos 50 bytes. Datos aleatorios (incluyendo la salida de la mayoría de compresores) son codificados a unos 8.05 bits por byte, dando una expansión alrededor del 0.5%.

Como autocomprobación para tu protección, bzip2 utiliza CRCs de 32 bits para asegurarse de que la versión descomprimida de un fichero es idéntica a la original. Esto protege contra la corrupción de los datos comprimidos, y contra fallos sin detectar en bzip2 (afortunadamente es muy poco probable). La posibilidad de que la corrupción de datos pase desapercibida es microscópica, alrededor de una probabilidad entre cuatro billones por cada fichero procesado. Cuidado, sin embargo, con que la comprobación se realiza tras la descompresión, por lo que solo entonces se te informará de si algo está mal. El programa no te puede ayudar a recuperar los datos originales descomprimidos. Puede utilizar bzip2recover para intentar recuperar los datos de ficheros dañados.

0 para finalización normal, 1 para problemas de entorno (fichero no encontrado, opciones no válidas, errores de E/S, etc...), 3 para un error interno de consistencia (ej. un bug o fallo) que ha provocado que bzip2 se asuste.

OPCIONES

Comprime o descomprime la entrada estándar.
Fuerza la descompresión. bzip2, bunzip2 y bzcat son en realidad el mismo programa, y la decisión sobre la acción a realizar se toma en función del nombre que se utilice. Esta opción ignora este mecanismo y hace que bzip2 descomprima.
El complementario a -d: fuerza la compresión, independientemente del nombre con que se invoque.
Comprueba la integridad del fichero(s) especificado, pero no lo descomprime. En realidad se realiza una descompresión de prueba y se lanza el resultado.
Fuerza la sobrescritura de los archivos de salida. En general, bzip2 no sobreescribe archivos ya existentes. También hace que bzip2 rompa enlaces duros a archivos, de otro modo no lo haría.

en general, bzip2 no acepta descomprimir archivos sin el byte mágico del encabezado. Si se fuerza a hacerlo, (-f) pasará estos archivos sin modificarlos. Este es el comportamiento de GNU gzip.

Mantener (no borrar) los ficheros de entrada durante la compresión o la descompresión.
Reduce la utilización de memoria para la compresión, la descompresión y la comprobación. Los ficheros son descomprimidos y comprobados utilizando un algoritmo modificado que solo requiere 2.5 bytes por cada byte del bloque. Esto significa que cualquier fichero puede ser descomprimido en 2300 k de memoria, aunque a la mitad de la velocidad normal.

During compression, -s selects a block size of 200 k, which limits memory use to around the same figure, at the expense of your compression ratio. In short, if your machine is low on memory (8 megabytes or less), use -s for everything. See MEMORY MANAGEMENT below.

Evita mostrar mensajes de aviso poco importantes. Aquellos que indiquen errores de E/S y críticos sí se mostrarán.
Modo extenso (muestra el porcentaje de compresión para cada fichero procesado). El uso de más opciones -v incrementa el nivel de extensión, arrojando gran cantidad de información principalmente de interés para usos de diagnóstico.
Print a help message and exit.
Muestra la versión del programa, los términos de la licencia y sus condiciones.
-1 (o --fast) para -9 (o --best)
Set the block size to 100 k, 200 k ... 900 k when compressing. Has no effect when decompressing. See MEMORY MANAGEMENT below. The --fast and --best aliases are primarily for GNU gzip compatibility. In particular, --fast doesn't make things significantly faster. And --best merely selects the default behaviour.
--
Treats all subsequent arguments as file names, even if they start with a dash. This is so you can handle files with names beginning with a dash, for example: bzip2 -- -myfilename.
These flags are redundant in versions 0.9.5 and above. They provided some coarse control over the behaviour of the sorting algorithm in earlier versions, which was sometimes useful. 0.9.5 and above have an improved algorithm which renders these flags irrelevant.

CONTROL DE MEMORIA

bzip2 compresses large files in blocks. The block size affects both the compression ratio achieved, and the amount of memory needed for compression and decompression. The flags -1 through -9 specify the block size to be 100,000 bytes through 900,000 bytes (the default) respectively. At decompression time, the block size used for compression is read from the header of the compressed file, and bunzip2 then allocates itself just enough memory to decompress the file. Since block sizes are stored in compressed files, it follows that the flags -1 to -9 are irrelevant to and so ignored during decompression.

Compression and decompression requirements, in bytes, can be estimated as:


Compresión: 400 k + ( 8 x tamaño de bloque )


Descompresión: 100 k + ( 4 x tamaño de bloque ), o
100 k + ( 2.5 x tamaño de bloque )

Los tamaños de bloques más grandes producen rápidamente resultados marginales cada vez más pequeños. La mayor parte de la compresión procede de los primeros doscientos o trecientos KBs de tamaño de bloque, un hecho a considerar cuando se utilice bzip2 en máquinas pequeñas. También es importante apreciar que los requerimientos de memoria en la descompresión vienen dados por el tamaño de bloque elegido en la compresión.

Para ficheros comprimidos con el tamaño de bloque por defecto de 900 k, bunzip2 requerirá aproximadamente 3700 kbytes para descomprimir. Para soportar la descompresión de cualquier fichero en una máquina de 4MB, bunzip2 tiene una opción para descomprimir utilizando aproximadamente la mitad de esta cantidad de memoria, unos 2300 kbytes. La velocidad de descompresión también se divide entre dos, por lo que solo se debe utilizar cuando sea necesario. La opción mencionada es -s.

En general, intenta utilizar el mayor tamaño de bloque que permita la cantidad de memoria de tu sistema, puesto que esto maximiza la compresión conseguida. La velocidad de compresión y descompresión no se ven prácticamente afectadas por el tamaño de bloque.

Otro punto importante tiene que ver con los ficheros que caben en un solo bloque -- eso equivale a la mayoría de ficheros que encontrará usando grandes tamaños de bloque. La cantidad de memoria utilizada es proporcional al tamaño del fichero, ya que el fichero es más pequeño que un bloque. Por ejemplo, comprimir un fichero de 20.000 bytes con la opción -9 hará que el compresor se asigne unos 7600 k de memoria, pero solo utilice 400 k + 20000 * 8 = 560 kilobytes de ella. De forma similar, el descompresor se asignará 3700 k pero solo utilizará 100 k + 20000 * 4 = 180 kbytes.

Aquí está una tabla que resume la utilización máxima de memoria para los diferentes tamaños de bloque. También se recoge el tamaño total resultante de compresión de 14 ficheros del "Calgary Text Compression Corpus" que sumaban 3,141,622 bytes. Esta columna da una idea de como varía la compresión en función del tamaño de bloque. Estos datos no llegan a dar una verdadera idea de la ventaja de tamaños de bloque grandes para ficheros grandes, ya que el Corpus está dominado por ficheros pequeños.


Uso al Uso al Descomp. Tamaño
Opción comprimir descomp. usando -s del Corpus


-1 1200k 500k 350k 914704
-2 2000k 900k 600k 877703
-3 2800k 1300k 850k 860338
-4 3600k 1700k 1100k 846899
-5 4400k 2100k 1350k 845160
-6 5200k 2500k 1600k 838626
-7 6100k 2900k 1850k 834096
-8 6800k 3300k 2100k 828642
-9 7600k 3700k 2350k 828642

RESCATANDO DATOS DESDE ARCHIVOS DAÑADOS

bzip2 comprime los ficheros en bloques, normalmente de 900 kbytes. Cada bloque se maneja de manera independiente. Si un error de transmisión o del medio (físico) provoca que un fichero .bz2 multibloque sea dañado, puede que sea posible recuperar los datos de los bloques intactos que queden en el fichero.

La representación comprimida de cada bloque está delimitada por un patrón de 48 bits, lo que hace posible el encontrar los límites de los bloques con cierta certeza. Cada bloque contiene su propio CRC de 32 bit, por lo que los bloques dañados puedes ser distinguidos de los intactos.

bzip2recover es un simple programa cuyo único propósito es la búsqueda de bloques en ficheros .bz2, para su posterior escritura en su propio fichero .bz2. Entonces puede utilizar bzip2 -t para comprobar la integridad de los ficheros resultantes y descomprimir aquellos que estén intactos.

bzip2recover takes a single argument, the name of the damaged file, and writes a number of files "rec00001file.bz2", "rec00002file.bz2", etc., containing the extracted blocks. The output filenames are designed so that the use of wildcards in subsequent processing -- for example, "bzip2 -dc rec*file.bz2 > recovered_data" -- processes the files in the correct order.

bzip2recover será de mayor provecho cuando trate ficheros .bz2 grandes, ya que estos contendrán muchos bloques. Es inútil utilizarlo en ficheros de un solo bloque dañados, ya que el bloque dañado no podrá ser recuperado. Si desea minimizar cualquier posible perdida de datos debida a un error del medio físico o de la transmisión, puede considerar la utilización de tamaños de bloque menores en la compresión.

NOTAS SOBRE El FUNCIONAMIENTO DEL PROGRAMA

The sorting phase of compression gathers together similar strings in the file. Because of this, files containing very long runs of repeated symbols, like "aabaabaabaab ..." (repeated several hundred times) may compress more slowly than normal. Versions 0.9.5 and above fare much better than previous versions in this respect. The ratio between worst-case and average-case compression time is in the region of 10:1. For previous versions, this figure was more like 100:1. You can use the -vvvv option to monitor progress in great detail, if you want.

La velocidad de descompresión no se ve afectada por este hecho.

Normalmente bzip2 reserva varios megabytes de memoria para operar en ellos, y entonces los utiliza de una manera bastante aleatoria. Esto significa que el funcionamiento del programa, tanto para comprimir como para descomprimir, se ve en gran parte determinado por la velocidad a la que su máquina sea capaz de servir fallos de caché. Debido a esto, se ha observado que pequeños cambios en el código para reducir la tasa de fallos proporcionan una mejora desproporcionadamente grande en el funcionamiento del programa. Supongo que bzip2 funcionará mejor en máquinas con caches de gran tamaño.

ADVERTENCIAS

Los mensajes de error de E/S no son tan útiles como podrían. bzip2 intenta detectar errores de E/S y salir limpiamente, pero los detalles sobre la causa del problema a veces pueden ser engañosos.

Esta página del manual pertenece a la versión 1.0.8 de bzip2. Los datos comprimidos creados por esta versión son totalmente compatibles con la anteriorversión, las versiones 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, 1.0.2 y superiores con con la siguiente excepción: Solo la versión 0.9.0 puede descomprimir correctamente múltiples archivos concatenados. La 0.1pl2 no puede hacer esto; parará justo después de descomprimir el primer archivo en el flujo de datos.

bzip2recover versions prior to 1.0.2 used 32-bit integers to represent bit positions in compressed files, so they could not handle compressed files more than 512 megabytes long. Versions 1.0.2 and above use 64-bit ints on some platforms which support them (GNU supported targets, and Windows). To establish whether or not bzip2recover was built with such a limitation, run it without arguments. In any event you can build yourself an unlimited version if you can recompile it with MaybeUInt64 set to be an unsigned 64-bit integer.

AUTOR

Julian Seward, jseward@acm.org.

https://sourceware.org/bzip2/

The ideas embodied in bzip2 are due to (at least) the following people: Michael Burrows and David Wheeler (for the block sorting transformation), David Wheeler (again, for the Huffman coder), Peter Fenwick (for the structured coding model in the original bzip, and many refinements), and Alistair Moffat, Radford Neal and Ian Witten (for the arithmetic coder in the original bzip). I am much indebted for their help, support and advice. See the manual in the source distribution for pointers to sources of documentation. Christian von Roques encouraged me to look for faster sorting algorithms, so as to speed up compression. Bela Lubkin encouraged me to improve the worst-case compression performance. Donna Robinson XMLised the documentation. The bz* scripts are derived from those of GNU gzip. Many people sent patches, helped with portability problems, lent machines, gave advice and were generally helpful.

TRADUCCIÓN

La traducción al español de esta página del manual fue creada por Salvador Gimeno Zanón <salgiza@jet.es> y Marcos Fouces <marcos@debian.org>

Esta traducción es documentación libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.

Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org.