Archivers: tar, zip, cp, arj i atool

Última modificació: gener de 2021

7z

a: Add files to archive

b: Benchmark

d: Delete files from archive

e: Extract files from archive (without using directory names)

l: List contents of archive

t: Test integrity of archive

u: Update files to archive

x: eXtract files with full paths

Per a comprimir varis fitxers o directoris, aplicarem recusivitat:

7z a -r -y fitxer_comprimit /home/toni/carpeta_a_comprimir

El mateix que l'anterior, però encriptem el fitxer resultant amb un password:

7z a -r -y fitxer_comprimit /home/toni/carpeta_a_comprimir

Pot generar fitxers dividits en diferents volums de la mida que volguem. Exemple:

7z a -r -y -mx0 -v100m pics /home/toni/Pictures/

Comprimeix la carpeta Pictures a un o varis fitxers "pics" (seran de 100 MB cadascú), recursivament i sense compressió (només arxivat). Va bé pujar fitxers a box.com sense tenir compte de pagament.

mx9 si volem la màxima compressió.


Per a excloure alguns fitxers, en l'exemple següent el fitxer CRYPTOFILE i la paperera:

7z a -r -y fitxer_comprimit /home/toni/carpeta_a_comprimir/* '-x!*CRYPTOFILE' 'x!*share/Trash'


Tar

Operacions principals:

--list

--extract

--create

--compare

--append afegeix fitxers al final d'un arxiu

--update

--concatenate afegeix un tar a un altre tar

--delete

Modificadors d'operació:

--overwrite sobreescriu en extreure

--ignore-failed-read continua encara que hi hagi errors (fitxers oberts...)

--file=nom_arxiu fa servir l'arxiu o dispositiu NOM_ARXIU

--gzip comprimeix amb zip

--directory=DIR canvia a directori DIR (en extreure, per exemple)

--exclude=PATTERN

--absolute-names

--dereference no enllaç simbòlic, si no el arxius realment

--no-recursion

--verbose

--totals mostra bytes escrits a l'arxiu en terminar

Exemple d'arxivat i compressió amb gzip d'un directori:

tar cvzf home.tar.gz /home/toni/

Descomprimir:

tar xvzf home.tar.gz

Si volem comprimir el mateix però amb bzip2, substituirem el paràmetre z per una j (en comptes de cvzf seria cvjf)


zip

-u update

-r recursive

-e encrypt

-0 store only

-y copia link, no destí

-o data de l'arxiu més nou que es comprimeixi

Exemple: comprimir (actualitzant i refrescant l'arixu de destí) de les carpetes existents a un directori i especificades per un fitxer llista.txt.

for i in $( cat llista.txt ); do

zip -u -r /media/sda1/COPIES_SEG/\(i \)i

done


cp

-a equival a -dpR

-d no segueixis links

-p preserva atributs d'arxiu, si és possible

-R recursiu

-u només si és més nou o pendent

-v verbose


arj

Per a Linux tenim la implementació en codi lliure (http://arj.sourceforge.net/) que intenta ser compatible al màxim amb l'original.

Exemple: comprimir (actualitzant i refrescant l'arixu de destí) de les carpetes existents a un directori i especificades per un fitxer llista.txt. El fitxer de destí pot ser de 1,9 Gb màxim; si és superior es dividirà en diferents volums amb aquest límit de mida.

for i in $( cat llista.txt ); do

arj a -f -u -r -y -v1900000k /media/sda1/COPIES_SEG/\(i \)i

#(podem fer també arj a -fury -v19... , més fàcil de recordar)

done

Una opció molt interessant d'arj és el modificador -j#, que podem fer servir per a fer inventari d'un directori, pendrive, etc. Exemple:

arj a -r -j# fitxer_inventari.arj directori_o_suport_a_inventariar

Això generarà un fitxer arj que serà com un comprimit, amb la diferència que no guarda els fitxers realment a dintre de l'arj. A canvi tindrem un arj que podrem navegar amb algun archiver i veure les nostres carpetes i fitxers amb la informació de mida que tenen en la ubicació que hem "arxivat".


Atool

És un conjunt d'scripts que serveixen per no haver de memoritzar els modificadors del programaris "arxivadors" (compressors).

Això que vol dir? Quan volem comprimir un fitxer o directori, depenent si ho volem fer en zip o tar.gz haurem de passar uns paràmetres als binaris per tal d'obtenir el resultat desitjat. Atool "sap" quin paràmetre ha de passar a cada compressor de manera que ens estalviem aquesta feina. Treballa amb infinitat de compressors.

La sintaxis és del tipus:

atool -opcions COMPRIMIT fitxers

Però te alguns alias per facilitar encara més la feina. Per exemple:

    • En comptes de: atool -l, podem fer servir als (llistar contingut)

    • En comptes de: atool -x, podem fer servir aunpack (extreure o descomprimir)

    • I en comptes de: atool -a, podem fer servir apack (afegir o crear)

I n'hi han alguns més. http://www.nongnu.org/atool/ />


Scripts de compressió massiva

    • Comprimeix tots els fitxers que hi hagi a un directori, deixant com a sortida un fitxer comprimit per a cada fitxer original:

#!/bin/bash

for i in $( ls -1 ); do

tar cvzf "\(i.tar.gz" pwd/\)i

#echo $i

done

    • El mateix però amb zip, sense comprimir (només store) i funciona amb noms de directoris i fitxers que continguis espais (ideal per acomprimir directoris de mp3 reproduïbles amb l'VLC):

for x in *; do

if [ -d "$x" ]; then

zip -r -0 "\(x.zip" "\)x"

fi

done