Eines per arxivar paquets
De Guifi.net - Wiki Català
Contingut
- 1 tar
- 2 gzip
- 3 bz2
- 4 cpio
- 5 ar
- 6 Empaquetar un fitxer en múltiples fitxers partits. split
- 7 Exemples
- 8 Vegeu també
tar
L'ordre tar (tape archiver) permet arxivar fitxers i va ser creada per GNU. Com podeu veure pel seu nom, l'ordre tar s'utilitzava inicialment per fer còpies de seguretat en cintes (tapes). Actualment però, podem utilitzar tar per guardar dades en qualsevol dispositiu o simplement per arxivar al disc dur.
Els fitxers creat per tar se'ls anomena tarballs i són força utilitzats per fer còpies de seguretat o per distribuir múltiples fitxers entre sistemes. Per exemple, moltes aplicacions es poden descarregar des de Internet com a tarballs o sense anar més lluny, els paquets de programari contenen fitxers tarball al seu interior.
tar és una comanda amb força opcions, les quals podeu consultar en detall al manual:
$ man tar
O online a:
http://linux.die.net/man/1/tar
I també podeu consultar el manual online a:
http://www.gnu.org/software/tar/manual/index.html
A la següent taula resumim les ordres mśe importants que ens proporciona tar:
Comanda | Comanda curta | Descripció |
---|---|---|
--create | c | Crea un arxiu tar |
--concatenate | A | Afegeix fitxers tar a un fitxer |
--append | r | Afegeix fitxers que no són tar a un arxiu ta |
--update | u | Afegeix només els fitxers que són nous a un arxiu |
--diff o --compare | d | Compara un arxiu amb els fitxers del disc |
--list | t | Mostra els continguts d'un arxiu |
--extract o --get | x | Extreu els fitxers d'un arxiu |
NOTA: A la taula quan parlem d'arxiu ens referim a un tarball o fitxer tar. NOTA 2: Les comandes de tar es poden especificar tant sense guió (-) com amb guió i a més es poden combinar. Per exemple $ tar xvzf fitxer.tar.gz
A més de les comandes disposem dels següents paràmetres (també anomenats qualificadors):
Qualificador | Abreviatura | Descripció |
---|---|---|
--directory dir | C | Canvia al directori -dir' abans de realitzar les operacions |
--file [host:]file | f | Utilitza el fitxer file de la màquina host com a fitxer d'arxiu. |
--listed-incremental file | g | Realitza una còpia de seguretat incremental o una restauració utilitzant el fitxer file com a llista dels fitxers arxivats prèviament. |
--one-file-system | l | Fa còpia de seguretat o restaura només d'un sistema de fitxers. |
--multi-volume | M | Crea o extrau un fitxer tar multivolum |
--same-permissions | p | Manté tota la informació de permisos |
--absolute-paths | P | Manté les barres (/) inicials dels fitxers |
--verbose | b | Mostra el fitxers llegits o extrets. Quan s'utilitza amb --list mostra informació extra com la mida, els permisos i les marques de temps dels fitxers. |
--verify | w | verifica l'arxiu després de creat |
--exclude file | no en té | Exclou el fitxer file de l'arxiu |
--exclude-from file | X | Exclou els fitxers indicats a file de l'arxiu |
--gzip or --ungzip | z | Processa (comprimeix o descomprimeix) un fitxer comprimit amb gzip |
--bzip2 | j | Processa (comprimeix o descomprimeix) un fitxer comprimit amb bzip |
Instal·lació i paquets
Tal i com podeu comprovar amb:
$ whereis tar tar: /bin/tar /usr/share/man/man1/tar.1.gz $ dpkg -S /bin/tar tar: /bin/tar
en sistemes de la família Debian, com per exemple Ubuntu, tar es proporcionat pel paquet tar. Aquest paquet es troba normalment instal·lat per defecte en la majoria de distribucions.
Fitxers i el paràmetre f
Per defecte, l'ordre tar treballa amb cintes. Per aquesta raó quan vulguem treballar amb fitxers (la majoria de vegades) haurem d'indicar-ho amb el paràmetre f.
Empaquetar
La sintaxi a utilitzar a l'hora d'empaquetar un conjunt de fitxers és:
$ tar cf fitxer.tar fitxers
On fitxer.tar és el paquet que contindrà tots els fitxers especificats per fitxers. Per defecte tar és una comanda silenciosa en cas que tot funcioni correctament (a l'estil Unix: No News Good News). Podeu obtenir més informació amb el paràmetre v (--verbose). Per exemple:
$ tar cvf fitxer.tar FestaUbuntu FestaUbuntu/ FestaUbuntu/XerradaOpenStreetMaps/ FestaUbuntu/XerradaOpenStreetMaps/.svn/ FestaUbuntu/XerradaOpenStreetMaps/.svn/entries FestaUbuntu/XerradaOpenStreetMaps/.svn/text-base/ FestaUbuntu/XerradaOpenStreetMaps/.svn/props/ FestaUbuntu/XerradaOpenStreetMaps/.svn/prop-base/ FestaUbuntu/XerradaOpenStreetMaps/.svn/format FestaUbuntu/XerradaOpenStreetMaps/.svn/tmp/ FestaUbuntu/XerradaOpenStreetMaps/.svn/tmp/text-base/ FestaUbuntu/XerradaOpenStreetMaps/.svn/tmp/text-base/presentacio-ubuntujj-osm.pdf.svn-base FestaUbuntu/XerradaOpenStreetMaps/.svn/tmp/props/ FestaUbuntu/XerradaOpenStreetMaps/.svn/tmp/prop-base/
També es poden indicar llistes de fitxers:
$tar -c file1 file2 file3 ...
NOTA: Observeu que tar suporta tant les opcions amb guió (Unix98) i sense guió (BSD).
Empaquetar fitxers nous (a partir d'una data)
Podem empaquetar només el fitxers nous a partir d'una data concreta, amb l'opció -N (--newer):
$ tar cvf file.tar --newer "2008-02-07 13:54:00" fitxers
Empaquetar mantenint les permisos
Ho podem fer amb l'opció -p (--preserve-permisions):
$ tar czfp file.tar.gz archivewithtar/
Desempaquetar
Per desempaquetar un fitxer podem utilitzar la comanda --extract (x)
$ tar -xvf fitxer.tar
o
$ tar xvf fitxer.tar
El paràmetre v (--verbose) l'hem utilitzat per mostrar més informació sobre el procés d'extracció. Per defecte només es mostren els errors.
Podem també extreure només un fitxer (o subconjunt de fitxers):
$ tar xvf linuxtarfile.tar archivewithtar/dmesg
Llistar
Per tal de consultar els continguts d'un fitxer tar, podeu utilitzar l'ordre t:
$ tar tf fitxer.tar FestaUbuntu/ FestaUbuntu/XerradaOpenStreetMaps/ FestaUbuntu/XerradaOpenStreetMaps/.svn/ FestaUbuntu/XerradaOpenStreetMaps/.svn/entries FestaUbuntu/XerradaOpenStreetMaps/.svn/text-base/ FestaUbuntu/XerradaOpenStreetMaps/.svn/props/ FestaUbuntu/XerradaOpenStreetMaps/.svn/prop-base/ FestaUbuntu/XerradaOpenStreetMaps/.svn/format FestaUbuntu/XerradaOpenStreetMaps/.svn/tmp/ FestaUbuntu/XerradaOpenStreetMaps/.svn/tmp/text-base/ FestaUbuntu/XerradaOpenStreetMaps/.svn/tmp/text-base/presentacio-ubuntujj-osm.pdf.svn-base FestaUbuntu/XerradaOpenStreetMaps/.svn/tmp/props/ FestaUbuntu/XerradaOpenStreetMaps/.svn/tmp/prop-base/
podeu mostrar més informació amb v (--verbose):
$ tar -tvf fitxer.tar drwxr-xr-x sergi/sergi 0 2009-05-12 12:52 FestaUbuntu/ drwxr-xr-x sergi/sergi 0 2009-05-12 12:52 FestaUbuntu/XerradaOpenStreetMaps/ drwxr-xr-x sergi/sergi 0 2009-05-12 13:50 FestaUbuntu/XerradaOpenStreetMaps/.svn/ -r--r--r-- sergi/sergi 216 2009-05-12 12:52 FestaUbuntu/XerradaOpenStreetMaps/.svn/entries ...
Còpies incrementals
Comparar un fitxers tar amb fitxers del sistema
Es pot fer amb l'opció `--compare' (`-d'):
$ tar --compare --verbose --file=index.tar
Equivalent a:
$ tar dvf index.tar
Es mostraran tots els fitxers seguits d'un text. Si no hi ha text és que no hi ha diferencies.
Exemple:
$ mkdir tar $ cd tar $ touch a $ touch b $ touch c $ tar cvf fitxers.tar a b c
Si comparem són iguals:
$ tar dvf fitxers.tar a b c
Si ara modifiquem un fitxer:
$ touch b
$ tar dvf fitxers.tar a b b: Mod time differs c
Si modifiquem el contingut:
$ vi a $ tar dvf fitxers.tar a a: Mod time differs a: Size differs b b: Mod time differs c
Recursos:
Opció -p. Preservar permisos
Per exemple:
$ sudo tar -xvpzf $IMAGE_PATH -C /mnt/${NAME}/
Extreu una imatge de disc
Segons el manual, també es pot utilitzar--preserve:
$ man tar ... --preserve same as both -p and -s
Crear una imatge de disc
Des d'una live CD:
$ tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /
Recursos:
gzip
En sistemes operatius lliures, el sistema més utilitzat per tal de comprimir fitxers és gzip. Gzip és l'abreviació de GNU zip.
Gzip es basa en l'algoritme DEFLATE, que és una combinació dels algorismes LZ77 i el Huffman. DEFLATE es va desenvolupar com a resposta a les patents que van cobrir LZW i d'altres algoritmes de compressió.
No s'ha de confondre el gzip amb el Zip ja que no són compatibles. gzip no arxiva fitxers, només els comprimeix. A causa d'això tot sovint s'utilitza conjuntament amb alguna eina per arxivar com tar.
Normalment, l'extensió dels arxius gzipats és .gz. El programari d'Unix sovint es distribueix en fitxers amb extensió
.tar.gz
o
.tgz
anomenats tarballs. Són fitxers empaquetats amb tar i comprimits amb gzip.
Descomprimir tarballs
Per descomprimir un fitxer gzip:
$ tar xvzf fitxercomprimit.tar.gz
- x: Extreure
- f: Indica que treballem amb un fitxer. Tar és una eina que té molts anys i treballa per defecte amb cintes
- v: Opcional. Mode verbose. Aporta més informació sobre el procés.
Comprimir tarballs
$ tar -czf fitxers.tar.gz fitxers
Recursos:
Fitxers gz
Comprimir
$ gzip fitxer
Descomprimir
$ gzip -d fitxer.gz
O podeu utilitzat gunzip:
$ gunzip fitxer.gz
Per defecte es substitueix el fitxer comprimit pel resultat de descomprimir. Per descomprimir el resultat en un altre fitxer:
$ gunzip fitxer.gz > fitxer
Un cas força habitual es descomprimir els fitxers de documentació del paquets Debian. Normalment, per estalviar temps, aquest fitxers estan comprimits. Per exemple, per veure exemples de com configurar les interfícies de xarxa:
$ dpkg -L ifupdown | grep doc | grep interfaces /usr/share/doc/ifupdown/examples/network-interfaces.gz ...
$ sudo gunzip /usr/share/doc/ifupdown/examples/network-interfaces.gz $ vi /usr/share/doc/ifupdown/examples/network-interfaces
Llistar
$ tar -ztvf file.tar.gz
On:
- t: List the contents of an archive
- v: Verbosely list files processed (display detailed information)
- z: Filter the archive through gzip so that we can open compressed (decompress) .gz tar file
- f filename: Use archive file called filename
bz2
Recursos:
Descomprimir tarball
$ tar jxvf fitxercomprimit.tar.bz2
Comprimir tarball
$ tar cvjf tarfile.tar.bz2 files...
Llistar tarball
$ tar -jtvf file.tar.bz2
On:
- t: List the contents of an archive
- v: Verbosely list files processed (display detailed information)
- z: Filter the archive through gzip so that we can open compressed (decompress) .gz tar file
- j: Filter archive through bzip2, use to decompress .bz2 files.
- f filename: Use archive file called filename
Descomprimir
Dos opcions:
$ bzip2 -d fitxer.bz2
o
$ bunzip2 fitxer.bz2
Comprimir
$ bzip2 fitxer
Comprimeix el fitxer i genera un fitxer fitxer.bz2 (l'original es borra).
cpio
L'ordre cpio com tar, també és un ordre que permet arxivar fitxers, però que difereix en la forma de funcionar.
L'ordre cpio té 3 modes d'operació:
- Mode copy-out (-o o --create-option): Aquest mode crea un arxiu i copia fitxers a aquest arxiu.
- Mode copy-in (-i o --extract): Aquest mode extreu fitxers d'un arxiu. És possible extreure només fitxers concrets o fitxers segons un patró.
- Mode copy-pass (-p o --pass-through): Combina els dos modes anteriors permetent que es pugui copiar un estructura de directoris d'una localització a un altre.
NOTA: tingueu en compte que el nom dels modes copy-out i copy-in pot ser una mica confús.
Cpio té múltiples opcions que podeu consultar al manual:
$ man cpio
o a Internet:
http://linux.die.net/man/1/cpio
Les opcions més importants les podeu trobar a la següent taula:
Opció | Abreviatura | Descripció |
---|---|---|
--reset-access-time | -A | Torna a establir el temps d'accés (atime) després de llegir el fitxer de forma qe no sembla que així estat llegit |
--append | -A | Afegeix fitxers a un arxiu |
--pattern-file=filename | -E filename | Utilitza els continguts del fitxer filename com a una llista de fitxers a extreure |
--file=filename | -F filename | Utilitza el fitxer filename com a fitxer d'arxiu. Si no s'utilitza aquest paràmetre per defecte s'utilitza la entrada estàndard o la sortida estàndard. |
--format=format | -H format | Utilitza un format especific per al fitxer d'arxiu. Els possibles formats són bin (per defecte, crea un fitxer binari), crc (nou format binari amb checksum), o tar |
No hi ha | -I filename | Utilitza el fitxer especificat en comptes de l'entrada estàndard. A diferència de -F no es redireccionen les dades de sortida. |
--no-absolute-filenames | No hi ha | En mode copy-in (extreure) extreu els fitxers relatius al directrui de treball. |
--unconditional | -u | Reemplaça els fitxers sense preguntar. |
--list | -t | Mostra la taula de continguts de l'entrada |
--verbose | -v | Mostra informació extra |
Arxivar fitxers
Per especificar els fitxers que es volen arxivar cal fer-ho utilitzant l'entrada estàndard. Tenim doncs força opcions:
Utilitzar l'ordre find:
Combinant l'ordre find amb un conducte (pipe) i redireccions:
$ find ./carpeta_a_arxivar | cpio -o > /media/KINGSTON/arxiu.cpio
El fitxer resultat no es troba comprimit. Per comprimir podem utilitzar gzip:
$ find ./carpeta_a_arxivar | cpio -o | gzip > /media/KINGSTON/arxiu.cpio
Extreure fitxers
Podem utilitzar l'opció -i i redireccions:
$ cpio -i < /media/KINGSTON/arxiu.cpio
Si el fitxer està comprimit podeu utilitzar l'opció -c:
$ gunzip -c /media/KINGSTON/arxiu.cpio| cpio -i
ar
Consulteu ar.
Empaquetar un fitxer en múltiples fitxers partits. split
Per exemple, per dividir un fitxer en trossos de 100M:
$ tar czv UbuntuServer_904_cursos.vmdk | split -b 100M - UbuntuServer.tar.gz
El fitxer es pot recuperar amb:
$ cat UbuntuServer.tar.gz* | tar xzvf -
Exemples
absolute path names
$ sudo tar cvzf /linux2/backups/mysql/wikidb_20090901.sql.tar.gz /linux2/backups/mysql/wikidb_20090901.sql ar: Removing leading `/' from member names /linux2/backups/mysql/wikidb_20090901.sql
Crea el fitxer /linux2/backups/mysql/wikidb_20090901.sql.tar.gz que conté el fitxer original /linux2/backups/mysql/wikidb_20090901.sql amb tot el path (però sense /). És dir:
linux2/backups/mysql/wikidb_20090901.sql
Si volem mantenir el /, cal utilitzar la opció:
-P, --absolute-names don’t strip leading ‘/’s from file names
NOTA: compte que pot ser perillós restaurar aquest tipus de fitxers en segons quins casos (pot sobrescriure fitxers del sistema importants sense previ avís).
Si no el volem mantenir i només volem posar el fitxer sense path:
$ sudo tar cvzf /linux2/backups/mysql/wikidb_20090901.sql.tar.gz -C /linux2/backups/mysql wikidb_20090901.sql
Fer una còpia d'un sistema muntat
$ sudo tar -cvpzf karmic_ubuntu_server.tar.gz --exclude=/mnt/karmic/proc --exclude=/mnt/karmic/lost+found --exclude=/mnt/karmic/sys -C /mnt/karmic/ .
Per restaurar en un altre partició muntada:
$ sudo tar -xvpzf /mnt/repositori_maquina_virtual/karmic_ubuntu_server.tar.gz -C /mnt/negrell