tar c'est le couteau suisse de l'archivage et c'était l'outil de base sur les unix d'autrefois. (Haricophile dixit)
La commande tar permet d'archiver ou de désarchiver des répertoires et des fichiers de façon optimale.
Cette commande vous allez l'utiliser souvent, n'hésitez pas à revenir dessus en cas d'oubli.
Les commandes tar en détail : Commandes tar pour débutant
tar xzf nom_du_fichier.tar.gz
Cette commande décompacte un fichier au format .tar.gz ou .tgz ; vous rencontrerez régulièrement ce genre de fichier.
Le format .tar.gz indique que le fichier est en réalité une archive (.tar), c'est-à-dire que le fichier contient en réalité plusieurs fichiers, et qu'il est compacté (.gz).
Cette commande peut être ainsi comprise :
x: permet d'extraire certains fichiers d'une archive z: décompacte l'archive avec l'utilitaire gzip f: extrait un fichier donné (ici le fichier est nom_du_fichier.tar.gz)
tar xjf nom_du_fichier.tar.gz
Cette commande décompacte un fichier au format .tar.bz2 ou .tbz ; Ce type de fichier est moins courant que le précédent.
Le format .tar.bz2 indique que le fichier est en réalité une archive (.tar), c'est-à-dire que le fichier contient en réalité plusieurs fichiers, et qu'il est compacté (.bz2).
Cette commande peut être ainsi comprise :
x: permet d'extraire certains fichiers d'une archive j: décompacte l'archive avec l'utilitaire bzip2 f: extrait un fichier donné (ici le fichier est nom_du_fichier.tar.bz2)
Pour info pour extraire les fichiers d'une archive tar, il est inutile de donner l'algo à utiliser pour la décompression, pour n'importe quel archive tar.
tar xf archive.tar.<extension>
où <extension> peut-être, gz, bz2, xz, Z… (liste non exhaustive).
Ça marche pourvu que le programme qui permet la décompression soit installé (gzip pour gz, bzip2 pour bz2, xz pour xz…).
Voilà ma petite contribution.
Merci à enicar et Atys sur le forum là :
Toujours avec la même commande on créera une archive de tout mon répertoire : /home/mattux/opensuse
cd /home/mattux/
tar cvzf opensuse.tgz opensuse
Avec cette commande mon répertoire opensuse, avec les sous répertoires et tous les fichiers, se trouveront rassemblés dans UN fichier archive : opensuse.tgz
On va expliquer les options :
c: indique à tar de créer une archive z: indique à tar de compacter une archive avec l'utilitaire gzip (-j pour bzip2) v: est le mode "verbose", qui affiche les noms des fichiers tel qu'ils ont été archivés à l'origine t: affiche la liste du contenu de l'archive sans l'extraire ( à la place de -x ou -c) p: préserver les permissions des fichiers
Si on souhaite effectuer sa sauvegarde sur un lecteur de bande (lecture séquentielle) /dev/st0
tar -cvf /dev/st0 /repertoire_à_sauver # il y a rembobinage de la cassette après l'enregistrement tar -cvf /dev/nst0 /repertoire_à_sauver # le n indique qu'il n'y a pas de rembobinage après l'enregistrement
c: pour créer l'archive v: mode verbeux pour afficher les détails f: indique la destination (un périphérique ou un fichier)
Pour connaitre les autres options, je vous recommande d’ouvrir Konqueror et de taper dans l’url “#commande”.
N’oubliez pas le dièse (#) sans espace.
Vous pouvez aussi obtenir, à tout moment, en console la page de man
de la commande avec :
man tar
Vous devez copier le contenu d'un répertoire vers un autre.
Bien que cela soit possible via la commande CP, cela peut se compliquer si vous voulez exclure certains fichiers, préserver les droits et les liens, être sûr d'avoir joint les fichiers cachés, …
Pour cela utilisez la commande tar
bien plus rapide que la commande cp
.
Copier le contenu du répertoire rep_source
vers le répertoire rep_dest
:
cd rep_dest
tar -C /chemin/rep_source -cvf - . | tar xvf -
Exclure tous les fichiers *.bak
:
cd rep_dest
tar -C /chemin/rep_source --exclude *.bak -cvf - . | tar xvf -
Exclure les répertoires source
et extra
:
cd rep_dest
tar -C /chemin/rep_source --exclude source --exclude extra -cvf - . | tar xvf -
Exclure une liste de fichiers et de répertoires.
Inscrivez dans un fichier, fichiers.txt
par exemple, la liste des fichiers que vous ne souhaitez pas copier :
admin.php serge.txt compte.doc password.txt extra source
Puis vous passez ce fichier à tar
:
cd rep_dest
tar -C /chemin/rep_source --exclude-from fichiers.txt -cvf - . | tar xvf -
Avec par exemple un fichier ratatouille.tar.xz
vous rencontrez le problème suivant :
debian@facile:~$ tar xzvf ratatouille.tar.xz gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now
Le paquet file vous informe de ceci :
file ratatouille.tar.xz ratatouille.tar.xz: XZ compressed data
vous pouvez alors installer le paquet suivant xz-utils.
Puis pour extraire votre fichier faire :
tar -xf ratatouille.tar.xz
Ou-bien pour décompresser :
xz -d -v ratatouille.tar.xz
Tar
vous permet bien d'autres subtilités impossibles à réaliser avec cp
. Voir l'aide de la page de manuel de tar
:
man tar
info tar
manuel complet (en)
Remerciements :
http://wiki.slackware-fr.org/administration:trucs:copier_un_repertoire_avec_tar#copier_un_repertoire_avec_tar (fr)
https://www.cyberciti.biz/faq/how-to-extract-tar-xz-files-in-linux-and-unzip-all-files/ (en)