La comanda bzip2 comprimeix i descomprimeix fitxers en format .bz2 amb l’algorisme de Burrows-Wheeler. Comprimeix més que gzip, però és més lenta, sobretot en descomprimir. Durant anys va ser l’opció habitual per a fitxers .tar.bz2; avui, per a fitxers nous, xz o zstd acostumen a ser millor tria, però bzip2 continua instal·lat a tot arreu i et trobaràs molts fitxers .bz2.
Com gzip i xz, bzip2 comprimeix fitxers individuals. Per comprimir un directori, primer s’agrupa amb tar (tar -cjf).
Sintaxi
bzip2 [opcions] [fitxers...]
Per defecte, bzip2 substitueix cada fitxer per la seva versió comprimida: informe.txt passa a ser informe.txt.bz2 i l’original desapareix. Si vols conservar-lo, afegeix -k.
Opcions més útils
| Opció | Què fa |
|---|---|
-d | Descomprimeix (equival a bunzip2) |
-k | Conserva el fitxer original |
-c | Escriu a la sortida estàndard i no toca l’original |
-1 … -9 | Mida de bloc, de 100 KB a 900 KB. -9 és el valor per defecte |
-t | Comprova la integritat sense descomprimir |
-v | Mostra la ràtio de compressió de cada fitxer |
-f | Sobreescriu fitxers de sortida existents |
-s | Fa servir menys memòria en descomprimir (més lent); útil en equips amb molt poca RAM |
Exemples
Comprimir un fitxer i veure quant s’ha reduït:
$ bzip2 -v informe.txt
informe.txt: 4.330:1, 1.847 bits/byte, 76.91% saved, 108894 in, 25147 out.
$ ls informe*
informe.txt.bz2
4.330:1 vol dir que el fitxer original és 4,3 vegades més gran que el comprimit; 76.91% saved, que t’estalvies gairebé un 77 % d’espai.
Comprimir conservant l’original:
bzip2 -k informe.txt
Comprimir diversos fitxers. Cada un queda en el seu propi .bz2:
bzip2 gener.csv febrer.csv marc.csv
Descomprimir (són equivalents):
bzip2 -d informe.txt.bz2
bunzip2 informe.txt.bz2
Llegir o buscar dins d’un fitxer comprimit sense descomprimir-lo al disc:
bzcat registre.log.bz2 | tail -20
bzless registre.log.bz2
bzgrep "ERROR" registre.log.bz2
Comprovar que un fitxer no està malmès:
$ bzip2 -tv informe.txt.bz2
informe.txt.bz2: ok
Comprimir la sortida d’una altra comanda:
journalctl --since today | bzip2 > registre_avui.txt.bz2
Comprimir un directori, a través de tar:
tar -cjf projecte.tar.bz2 projecte/
Nivells de compressió
A diferència de gzip o xz, els números de bzip2 no són «nivells» sinó la mida dels blocs en què divideix el fitxer: -1 fa blocs de 100 KB i -9, de 900 KB. Com més gran és el bloc, més comprimeix. Com que -9 ja és el valor per defecte, posar bzip2 -9 no fa res diferent de bzip2 sol. El que sí pots fer és baixar-lo per anar una mica més de pressa. En un Raspberry Pi 4, amb un .tar de 53 MB:
| Opció | Temps | Mida final |
|---|---|---|
-1 | 11 s | 14,2 MB |
-9 (per defecte) | 17 s | 12,8 MB |
Compte amb…
- L’original s’esborra. Sense
-ko-c, després de comprimir només queda el.bz2. Output file … already exists.bzip2no sobreescriu fitxers existents; fes servir-fsi ho vols.- Només fa servir un nucli.
bzip2és d’un sol fil. Si comprimeixes fitxers grans sovint, els paquetslbzip2opbzip2(als repositoris de Debian i Ubuntu) generen fitxers.bz2compatibles fent servir tots els nuclis. O canvia axz -T0ozstd -T0. - Fitxers malmesos. Com que treballa per blocs independents,
bzip2recover fitxer.bz2pot extreure els blocs que encara estiguin bé d’un fitxer danyat.
Comandes relacionades
bunzip2: descomprimir fitxers.bz2.gzip: més ràpid, menys compressió.xz: comprimeix més i descomprimeix més de pressa quebzip2.tar: per agrupar directoris abans de comprimir-los.- Comparativa de programes de compressió a Linux.