Provided by:
manpages-es-extra_0.8a-14ubuntu1_all 
NOMBRE
bzip2, bunzip2 - un compresor de ficheros por ordenación de bloques,
v0.9.0
bzcat - descomprime ficheros hacia la salida estándar
bzip2recover - recupera datos desde ficheros bzip2 dañados
SINOPSIS
bzip2 [ -cdfkstvzVL123456789 ] [ ficheros ... ]
bunzip2 [ -fkvsVL ] [ ficheros ... ]
bzcat [ -s ] [ ficheros ... ]
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 comandos son deliberadamente muy similares
a las de GNU Gzip, pero no son idénticas.
bzip2 espera que una lista de nombres acompañe las opciones de la línea
de comandos. Cada fichero es reemplazado por una copia comprimida de
él mismo, de nombre "nombre_original.bz2". Cada fichero comprimido
tiene la misma fecha de modificación y permisos que el original
correspondiente, de forma que estas propiedades puedan ser recuperadas
correctamente en el momento de la descompresión. El manejo de los
nombres de los ficheros es "ingenuo" en el sentido de que no hay forma
de preservar los nombres originales, los permisos y las fechas en los
sistemas de ficheros que carecen de estos conceptos, o que tienen
serias restricciones en el tamaño de los nombres, como por ejemplo 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 y recupera todos los ficheros cuyos
nombres acaben en ".bz2". Los ficheros sin este sufijo son ignorados.
Al igual que antes, si no se especifica el nombre de ningún fichero, la
descompresión se realiza desde la entrada estándar hacia 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.
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.
VALOR DEVUELTO
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.
CONTROL DE MEMORIA
Bzip2 comprime en bloques los ficheros grandes. El tamaño del bloque
afecta tanto al porcentaje de compresión conseguido, como a la cantidad
de memoria necesitada para la compresión y la descompresión. Las
opciones -1 a -9 especifican que el tamaño de los bloques vaya de
100,000 bytes hasta 900,000 bytes (el utilizado) respectivamente. En el
momento de descompresión, el tamaño de bloque utilizado para la
compresión es leído de la cabecera del fichero comprimido y entonces
bunzip2 se asigna a si mismo la memoria justa para descomprimir el
fichero. Puesto que el tamaño de los bloques está guardado en los
ficheros comprimidos, se deduce que las opciones -1 hasta -9 son
irrelevantes para la descompresión y por tanto son ignoradas. Los
requerimientos para la descompresión y la compresión, en bytes, pueden
ser calculados de esta forma::
Compresión: 400k + ( 7 x tamaño de bloque )
Descompresión: 100k + ( 4 x tamaño de bloque ), o
100k + ( 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 900k,
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 por 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 6700k de memoria, pero
solo utilice 400k + 20000 * 7 = 540 kilobytes de ella. De forma
similar, el descompresor se asignará 3700k pero solo utilizará 100k +
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 1100k 500k 350k 914704
-2 1800k 900k 600k 877703
-3 2500k 1300k 850k 860338
-4 3200k 1700k 1100k 846899
-5 3900k 2100k 1350k 845160
-6 4600k 2500k 1600k 838626
-7 5400k 2900k 1850k 834096
-8 6000k 3300k 2100k 828642
-9 6700k 3700k 2350k 828642
OPCIONES
-c --stdout
Comprime o descomprime hacia la salida estándar. -c
descomprimirá múltiples ficheros hacia la salida estándar, pero
solo comprimirá un solo fichero hacia la salida estándar.
-d --decompress
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.
-z --compress
El complementario a -d: fuerza la compresión, independientemente
del nombre con que se invoque.
-t --test
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.
-f --force
Fuerza la sobrescritura de los ficheros de salida. Normalmente,
bzip2 no sobreescribe ficheros ya existentes.
-k --keep
Mantener (no borrar) los ficheros de entrada durante la
compresión o la descompresión.
-s --small
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 2300k
de memoria, aunque a la mitad de la velocidad normal.
Durante la compresión, -s selecciona un tamaño de bloque de
200k, lo que limita el uso de memoria a aproximadamente el mismo
número, a expensas del porcentaje de compresión. En pocas
palabras, si su máquina no tiene mucha memoria (8 megabytes o
menos), utilice -s para todo. Vea CONTROL DE MEMORIA arriba.
-v --verbose
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.
-L --license -V --version
Muestra la versión del programa, los términos de la licencia y
sus condiciones.
-1 a -9
Pone el tamaño de bloque a 100 k, 200 k .. 900 k en la
compresión. No afecta a la descompresión. Vea CONTROL DE MEMORIA
arriba.
--repetitive-fast
bzip2 introduce algunas variaciones pseudoaleatorias en bloques
muy repetitivos, para limitar los casos de peor funcionamiento
al comprimir. Si el ordenamiento encuentra dificultades, el
bloque es aleatorizado, y el ordenamiento se reinicia. En pocas
palabras, bzip2 lo intenta por tres veces antes de pasar a
utilizar aleatorización. Esta opción hace que lo deje de
intentar mucho antes.
--repetitive-best
Lo contrario de --repetitive-fast. Lo intenta mucho más antes de
pasar a la aleatorización.
RESCATANDO DATOS DESDE FICHEROS DAÑADOS
bzip2 comprime los ficheros en bloques, normalmente de 900kbytes. 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 toma un solo argumento, el nombre del fichero dañado, y
crea un grupo de ficheros "rec0001fichero.bz2", "rec0002fichero.bz2",
etc, conteniendo los bloques extraídos. Los nombres de salida están
diseñados de forma que la utilización de comodines en un procesado
posterior (por ejemplo, "bzip2 -dc rec*file.bz2 > recovered_data")
liste los ficheros en el orden "correcto".
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
La fase de ordenación del programa recoge y junta todas las cadenas
similares del fichero. Debido a esto, los ficheros que contienen series
muy largas de símbolos, tales como "aabaabaabaab ..." (repetida varios
cientos de veces) puede que se compriman de forma extraordinariamente
lenta. Puede utilizar la opción -vvvv para monitorizar en detalle el
progreso, si así lo desea. La velocidad de descompresión no se ve
afectada.
Estos casos patológicos son raros en la práctica, apareciendo
principalmente en ficheros de prueba construidos artificialmente, y en
imágenes a bajo nivel de discos. No es recomendable utilizar bzip2 para
comprimir estas últimas. Si obtiene un fichero que causa una
pronunciada lentitud al comprimir, intente utilizar un tamaño de bloque
tan pequeño como sea posible, con la opción -1.
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 0.9.0 de bzip2. Los
datos comprimidos creados por esta versión son totalmente compatibles
en un sentido u otro con la anterior versión pública del programa, la
0.1pl2, pero con la siguiente excepción: Solo la versión 0.9.0 puede
descomprimir correctamente múltiples ficheros concatenados. La 0.1pl2
no puede hacer esto; parará justo después de descomprimir el primer
fichero en el flujo de datos.
La expansión de comodines bajo Windows 95 y NT no es perfecta.
bzip2recover utiliza enteros de 32 bits para representar las posiciones
de los bits en ficheros comprimidos, por lo que no puede manejar
ficheros comprimidos de más de 512 megabytes. Esto podría ser
fácilmente solucionado.
AUTOR
Julian Seward, jseward@acm.org.
http://www.muraroa.demon.co.uk
Las ideas incluidas en bzip2 se deben (al menos) a la siguiente gente:
Michael Burrows y David Wheeler (por la transformación por ordenación
de bloques), David Wheeler (otra vez, por el codificador de Huffman),
Peter Fenwick (por el modelo de programación estructurada del bzip,
original, y por muchos refinamientos), y Alistair Moffat, Radford Neal
y Ian Witten (por el codificador aritmético del bzip original). Estoy
en deuda con ellos por su ayuda, su apoyo y sus consejos. Vea el
manual en la distribución sin compilar para encontrar apuntes sobre
donde hallar fuentes de documentación. Christian von Roques me animó a
buscar algoritmos de ordenación más rápidos, para acelerar la
compresión. Bela Lubkin me alentó para que mejorara el funcionamiento
de la compresión en los casos peores. Mucha gente envío parches, ayudó
con los problemas de portabilidad, prestó máquinas, dio consejo y fue
de ayuda en general.
bzip2(1)