Molts cops has d'arxivar un conjunt de fitxers en un de sol, comprimir un fitxer que no fas servir perquè ocupi menys espai, o fer les dues coses a la vegada.
Introducció
Arrenca una màquina virtual Linux amb Windows Subsystem for Linux (WSL).
> connect-wsl archive -newEmpaquetar
tar és un programa que permet empaquetar un conjunt de fitxers en un sol fitxer.
El nom “tar” prové de la frase “Tape ARchive”, que era un cinta on es guardaven dades:

I avui en dia encara es fan servir les cintes per guardar dades en volums de Terabytes.
Crear
Crea dos fitxers:
A continuació guarda els fitxers en el fitxer numbers.tar amb el flag c (create):
El flag f (file) és necessari per indicar a tarel fitxer que ha de crear.
Si no passes el flag f, tarprotesta:
Diu que no pot escriure al terminal 😢
De totes maneres tampoc has vist si ha passat quelcom, només que hi ha un nou fitxer molt més gran que els altres:
$ ls -l
-rw-r--r-- 1 box box 10240 Oct 11 16:18 numbers.tar
-rw-r--r-- 1 box box 4 Oct 11 16:17 one.txt
-rw-r--r-- 1 box box 4 Oct 11 16:17 two.txt A partir de dos de mida 4 ha creat un de mida 10240.
Anem a veure què fa tar amb els fitxers amb el flag v (verbose) per tal que s’expliqui una mica:
No s’explica massa 🤔
Llistar
Amb el flag t (list) pots veure els fitxers que forment part del fitxer “tar”.
I afegint l’opció v pots veure metadades d’aquests fitxers:
Això ja ho sabíem 🤔
Perquè ets tu qui ha creat el fitxer 😅
Extreure
Si guarder un conjunt de fitxers en un fitxer “tar” és per poder recuperar-los si et fan falta.
Borra els fitxers i comencem de nou:
Baixem uns fitxers i el guardem en un .tar:
Com que has esborrat els “html” els has perdut … És un simulacre 🤫
Anem a veure què té el “tar”:
Doncs sí, té Barcelona i Girona!
Si vols recuperar Girona pots utlitzar el flag x (extract) amb el nom del fitxer:
Borra el fitxer girona.html …
I si vols recuperar tots els fitxers, doncs no diguis cap fitxer:
Comprimir
Comprimir un fitxer vol dir reduir la seva mida.
En comprimir un fitxer puc perdre informació, com passa amb els audios i els videos.
O no puc perdre gens d’informació, com és el nostre cas.
A continuació veurem algunes eines de compressió de diferent qualitat.
Baixa el fitxer https://gitlab.com/xtec/linux/archive/-/archive/main/archive-main.tar
Show solution
Desempaqueta el fitxer “tar”:
Show solution
Tenim 3 fitxers unix.* que tenen el mateix en formats diferents:
gzip
gzip és el mètode “clàssic”, i existeix des de l’any 1992
És l’any en què es van celebrar les Olimpíades a Barcelona
gzip utilitza l’algorisme de compressió “DEFLATE”, que també s’utilitza en les imatges PNG, en el protocol web HTTP i el protocol SSH.
El seu punt fort és la velocitat, l’ús eficient de la memòria i, sobretot, que s’entén amb tothom.
Com que gzip és una eina tan antiga, gairebé tots els sistemes Linux la tenen.
Normalment, els fitxers gzip s’emmagatzemen amb l’extensió .gz.
Comprimeix el fixer unix.md:
A més d’estar comprimit, ha canviat de nom, ara té .gz al final.
Si vols saber la ràtio de compressió, utilitza el flag -l:
No està malament.
Anem a veure com ho fa amb els altres:
Els formats odt i pdf ja estan comprimits, i gzip no pot fer massa per comprimir-los més.
Amb el flag -d (deflate) pots descomprimir un fitxer:
Si vols descomprimir tots els fitxers:
Si vols crear un fitxer nou has d’utilitzar una “canalització” amb el flag -c i el > corresponent:
Si vols, pots escollir el nivell de compressió amb un flag “numéric”: del -1 al -9.
- El flag
-1(o--fast) és el més ràpid i el menys eficient - El flag
-9(o--slow) és el més lent i el més eficient.
Per defecte, l’opció predeterminada és -6.
Anem a veure la diferència:
Activitat. Crea un espai de treball:
Baixa diferents arxius de Wikipedia, comprimeix els fitxers i compara la seva mida.
Show solution
bzip2
bzip2 és una implementació d’un algorisme anomenat “Burrows-Wheeler”.
Comprimeix més que gzip a canvi d’estar més estona per fer comprimir i necessitar més memòria, però no per descomprimir.
Si has d’enviar fitxers per Internet, bzip2 és una bona opció perquè són més petits si l’has d’enviar molts cops.
L’extensió que fan servir aquests fitxers és bzip2.
Instal.la bzip2:
Descarrega un fitxer:
bzip2 funciona com gzip:
A continuació compara gzip amb bzip2:
Pots veure que el fitxer .bz2 és més petit.
xz
xz va aparèixer el 2009, i utilitza un algorisme de compressió conegut com a LZMA2.
El problema és que fa servir més memòria que els altres.
Els fitxers “xz” tenen l’extensió .xz.
A diferència de bzip2, xz també té l’opció -d per saber la ràtio de compressió del fitxer:
No està malament!
Activitat. Comprimeix el fitxer amb gzip, bzip2 i xz i compara resultats:
Show solution
Empaquetar i comprimir
Empaquetar paquets amb tar no redueix la mida del fitxer tar.
El que es fa normalment és combinar tar amb un dels algorismes de compressió.
Crea una carpeta ossos:
Baixa alguns documents d’ossos a la carpeta ossos:
Pots comprimir una carpeta només amb tar:
Però pots passar a tarel flag z per comprimir amb gzip:
Borra la carpeta ossos:
Recupera el contingut de la carpeta ossos:
TODO
Continua llegint aquest document: Document