Provided by:
manpages-es-extra_0.8a-17_all 
NOMBRE
bzip2, bunzip2 - un compresor de ficheros por ordenacion de bloques,
v0.9.0
bzcat - descomprime ficheros hacia la salida estandar
bzip2recover - recupera datos desde ficheros bzip2 danados
SINOPSIS
bzip2 [ -cdfkstvzVL123456789 ] [ ficheros ... ]
bunzip2 [ -fkvsVL ] [ ficheros ... ]
bzcat [ -s ] [ ficheros ... ]
bzip2recover fichero
DESCRIPCI'ON
bzip2 comprime ficheros utilizando el algoritmo de compresion de texto
por ordenacion de bloques de Burrows-Wheeler. Generalmente, la
compresion obtenida es considerablemente mejor que la de compresores
mas convencionales basados en LZ77/LZ78, y se aproxima al rendimiento
de la familia PPM de compresores estadisticos.
Las opciones de la linea de comandos son deliberadamente muy similares
a las de GNU Gzip, pero no son identicas.
bzip2 espera que una lista de nombres acompane las opciones de la linea
de comandos. Cada fichero es reemplazado por una copia comprimida de
el mismo, de nombre "nombre_original.bz2". Cada fichero comprimido
tiene la misma fecha de modificacion y permisos que el original
correspondiente, de forma que estas propiedades puedan ser recuperadas
correctamente en el momento de la descompresion. 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 tamano de los nombres, como por ejemplo MS-
DOS.
Por defecto, bzip2 y bunzip2 no sobreescribiran ficheros existentes. Si
quieres que esto ocurra, especifica la opcion -f.
Si no se especifica el nombre de ningun fichero, bzip2 comprimira desde
la entrada estandar hacia la salida estandar. En este caso, bzip2 se
negara a escribir la salida comprimida hacia una terminal, ya que esta
seria totalmente incomprensible y por lo tanto inutil.
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 ningun fichero, la
descompresion se realiza desde la entrada estandar hacia la salida
estandar.
bunzip2 descomprimira correctamente un fichero que sea la concatenacion
de uno o mas ficheros comprimidos. El resultado es la concatenacion de
los correspondientes ficheros descomprimidos. Con (-t) se puede
comprobar la integridad de ficheros concatenados comprimidos.
Tambien se pueden comprimir o descomprimir ficheros a la salida
estandar utilizando la opcion -c. Multiples ficheros pueden ser
comprimidos y descomprimidos de esta forma. Las salidas resultantes
van siendo pasadas secuencialmente hacia la salida estandar. La
compresion de multiples ficheros de esta manera genera un flujo que
contiene multiples representaciones de ficheros. Tal flujo solo puede
ser descomprimido correctamente por la version 0.9.0 o superior de
bzip2; versiones anteriores de bzip2 pararan tras descomprimir el
primer fichero del flujo.
bzcat (o bzip2 -dc ) descomprime todos los ficheros especificados hacia
la salida estandar.
La compresion siempre se realiza, incluso aunque el fichero comprimido
sea ligeramente mayor que el original. Los ficheros de menos de cien
bytes tienden a hacerse mas grandes, ya que el mecanismo de compresion
tiene una sobrecarga constante de unos 50 bytes. Datos aleatorios
(incluyendo la salida de la mayoria de compresores) son codificados a
unos 8.05 bits por byte, dando una expansion alrededor del 0.5%.
Como autocomprobacion para tu proteccion, bzip2 utiliza CRCs de 32 bits
para asegurarse de que la version descomprimida de un fichero es
identica a la original. Esto protege contra la corrupcion de los datos
comprimidos, y contra fallos sin detectar en bzip2 (afortunadamente es
muy poco probable). La posibilidad de que la corrupcion de datos pase
desapercibida es microscopica, alrededor de una probabilidad entre
cuatro billones por cada fichero procesado. Cuidado, sin embargo, con
que la comprobacion se realiza tras la descompresion, por lo que solo
entonces se te informara de si algo esta mal. El programa no te puede
ayudar a recuperar los datos originales descomprimidos. Puede utilizar
bzip2recover para intentar recuperar los datos de ficheros danados.
VALOR DEVUELTO
0 para finalizacion normal, 1 para problemas de entorno (fichero no
encontrado, opciones no validas, 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 tamano del bloque
afecta tanto al porcentaje de compresion conseguido, como a la cantidad
de memoria necesitada para la compresion y la descompresion. Las
opciones -1 a -9 especifican que el tamano de los bloques vaya de
100,000 bytes hasta 900,000 bytes (el utilizado) respectivamente. En el
momento de descompresion, el tamano de bloque utilizado para la
compresion es leido de la cabecera del fichero comprimido y entonces
bunzip2 se asigna a si mismo la memoria justa para descomprimir el
fichero. Puesto que el tamano de los bloques esta guardado en los
ficheros comprimidos, se deduce que las opciones -1 hasta -9 son
irrelevantes para la descompresion y por tanto son ignoradas. Los
requerimientos para la descompresion y la compresion, en bytes, pueden
ser calculados de esta forma::
Compresion: 400k + ( 7 x tamano de bloque )
Descompresion: 100k + ( 4 x tamano de bloque ), o
100k + ( 2.5 x tamano de bloque )
Los tamanos de bloques mas grandes producen rapidamente resultados
marginales cada vez mas pequenos. La mayor parte de la compresion
procede de los primeros doscientos o trecientos KBs de tamano de
bloque, un hecho a considerar cuando se utilice bzip2 en maquinas
pequenas. Tambien es importante apreciar que los requerimientos de
memoria en la descompresion vienen dados por el tamano de bloque
elegido en la compresion.
Para ficheros comprimidos con el tamano de bloque por defecto de 900k,
bunzip2 requerira aproximadamente 3700 kbytes para descomprimir. Para
soportar la descompresion de cualquier fichero en una maquina de 4MB,
bunzip2 tiene una opcion para descomprimir utilizando aproximadamente
la mitad de esta cantidad de memoria, unos 2300 kbytes. La velocidad de
descompresion tambien se divide por dos, por lo que solo se debe
utilizar cuando sea necesario. La opcion mencionada es -s.
En general, intenta utilizar el mayor tamano de bloque que permita la
cantidad de memoria de tu sistema, puesto que esto maximiza la
compresion conseguida. La velocidad de compresion y descompresion no
se ven practicamente afectadas por el tamano de bloque.
Otro punto importante tiene que ver con los ficheros que caben en un
solo bloque -- eso equivale a la mayoria de ficheros que encontrara
usando grandes tamanos de bloque. La cantidad de memoria utilizada es
proporcional al tamano del fichero, ya que el fichero es mas pequeno
que un bloque. Por ejemplo, comprimir un fichero de 20.000 bytes con la
opcion -9 hara 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 asignara 3700k pero solo utilizara 100k +
20000 * 4 = 180 kbytes.
Aqui esta una tabla que resume la utilizacion maxima de memoria para
los diferentes tamanos de bloque. Tambien se recoge el tamano total
resultante de compresion de 14 ficheros del "Calgary Text Compression
Corpus" que sumaban 3,141,622 bytes. Esta columna da una idea de como
varia la compresion en funcion del tamano de bloque. Estos datos no
llegan a dar una verdadera idea de la ventaja de tamanos de bloque
grandes para ficheros grandes, ya que el Corpus esta dominado por
ficheros pequenos.
Uso al Uso al Descomp. Tamano
Opcion 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 estandar. -c
descomprimira multiples ficheros hacia la salida estandar, pero
solo comprimira un solo fichero hacia la salida estandar.
-d --decompress
Fuerza la descompresion. bzip2, bunzip2 y bzcat son en realidad
el mismo programa, y la decision sobre la accion a realizar se
toma en funcion del nombre que se utilice. Esta opcion ignora
este mecanismo y hace que bzip2 descomprima.
-z --compress
El complementario a -d: fuerza la compresion, 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 descompresion 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
compresion o la descompresion.
-s --small
Reduce la utilizacion de memoria para la compresion, la
descompresion y la comprobacion. 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 compresion, -s selecciona un tamano de bloque de
200k, lo que limita el uso de memoria a aproximadamente el mismo
numero, a expensas del porcentaje de compresion. En pocas
palabras, si su maquina 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 compresion para cada
fichero procesado). El uso de mas opciones -v incrementa el
nivel de extension, arrojando gran cantidad de informacion
principalmente de interes para usos de diagnostico.
-L --license -V --version
Muestra la version del programa, los terminos de la licencia y
sus condiciones.
-1 a -9
Pone el tamano de bloque a 100 k, 200 k .. 900 k en la
compresion. No afecta a la descompresion. 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 aleatorizacion. Esta opcion hace que lo deje de
intentar mucho antes.
--repetitive-best
Lo contrario de --repetitive-fast. Lo intenta mucho mas antes de
pasar a la aleatorizacion.
RESCATANDO DATOS DESDE FICHEROS DA~NADOS
bzip2 comprime los ficheros en bloques, normalmente de 900kbytes. Cada
bloque se maneja de manera independiente. Si un error de transmision o
del medio (fisico) provoca que un fichero .bz2 multibloque sea danado,
puede que sea posible recuperar los datos de los bloques intactos que
queden en el fichero.
La representacion comprimida de cada bloque esta delimitada por un
patron de 48 bits, lo que hace posible el encontrar los limites de los
bloques con cierta certeza. Cada bloque contiene su propio CRC de 32
bit, por lo que los bloques danados puedes ser distinguidos de los
intactos.
bzip2recover es un simple programa cuyo unico proposito es la busqueda
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
esten intactos.
bzip2recover toma un solo argumento, el nombre del fichero danado, y
crea un grupo de ficheros "rec0001fichero.bz2", "rec0002fichero.bz2",
etc, conteniendo los bloques extraidos. Los nombres de salida estan
disenados de forma que la utilizacion de comodines en un procesado
posterior (por ejemplo, "bzip2 -dc rec*file.bz2 > recovered_data")
liste los ficheros en el orden "correcto".
bzip2recover sera de mayor provecho cuando trate ficheros .bz2 grandes,
ya que estos contendran muchos bloques. Es inutil utilizarlo en
ficheros de un solo bloque danados, ya que el bloque danado no podra
ser recuperado. Si desea minimizar cualquier posible perdida de datos
debida a un error del medio fisico o de la transmision, puede
considerar la utilizacion de tamanos de bloque menores en la
compresion.
NOTAS SOBRE El FUNCIONAMIENTO DEL PROGRAMA
La fase de ordenacion del programa recoge y junta todas las cadenas
similares del fichero. Debido a esto, los ficheros que contienen series
muy largas de simbolos, tales como "aabaabaabaab ..." (repetida varios
cientos de veces) puede que se compriman de forma extraordinariamente
lenta. Puede utilizar la opcion -vvvv para monitorizar en detalle el
progreso, si asi lo desea. La velocidad de descompresion no se ve
afectada.
Estos casos patologicos son raros en la practica, apareciendo
principalmente en ficheros de prueba construidos artificialmente, y en
imagenes a bajo nivel de discos. No es recomendable utilizar bzip2 para
comprimir estas ultimas. Si obtiene un fichero que causa una
pronunciada lentitud al comprimir, intente utilizar un tamano de bloque
tan pequeno como sea posible, con la opcion -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 maquina sea capaz de servir fallos de cache. Debido a esto,
se ha observado que pequenos cambios en el codigo para reducir la tasa
de fallos proporcionan una mejora desproporcionadamente grande en el
funcionamiento del programa. Supongo que bzip2 funcionara mejor en
maquinas con caches de gran tamano.
ADVERTENCIAS
Los mensajes de error de E/S no son tan utiles como podrian. Bzip2
intenta detectar errores de E/S y salir limpiamente, pero los detalles
sobre la causa del problema a veces pueden ser enganosos.
Esta pagina del manual pertenece a la version 0.9.0 de bzip2. Los
datos comprimidos creados por esta version son totalmente compatibles
en un sentido u otro con la anterior version publica del programa, la
0.1pl2, pero con la siguiente excepcion: Solo la version 0.9.0 puede
descomprimir correctamente multiples ficheros concatenados. La 0.1pl2
no puede hacer esto; parara justo despues de descomprimir el primer
fichero en el flujo de datos.
La expansion 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 mas de 512 megabytes. Esto podria ser
facilmente 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 transformacion por ordenacion
de bloques), David Wheeler (otra vez, por el codificador de Huffman),
Peter Fenwick (por el modelo de programacion estructurada del bzip,
original, y por muchos refinamientos), y Alistair Moffat, Radford Neal
y Ian Witten (por el codificador aritmetico del bzip original). Estoy
en deuda con ellos por su ayuda, su apoyo y sus consejos. Vea el
manual en la distribucion sin compilar para encontrar apuntes sobre
donde hallar fuentes de documentacion. Christian von Roques me animo a
buscar algoritmos de ordenacion mas rapidos, para acelerar la
compresion. Bela Lubkin me alento para que mejorara el funcionamiento
de la compresion en los casos peores. Mucha gente envio parches, ayudo
con los problemas de portabilidad, presto maquinas, dio consejo y fue
de ayuda en general.
bzip2(1)