Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
doc:systeme:tar [22/04/2010 11:57] smolski |
doc:systeme:tar [05/11/2021 02:34] (Version actuelle) TyZef [Illustration avec différentes pratiques] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== TAR ====== | ||
+ | |||
+ | * Objet : La commande tar | ||
+ | * Niveau requis :{{tag>débutant avisé}} | ||
+ | * Commentaires : //Archiver ou désarchiver des répertoires et des fichiers// | ||
+ | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) | ||
+ | * Suivi : {{tag>à-tester}} | ||
+ | * Création par [[user>mattux]] le 07/06/2007 | ||
+ | * Testé par .... le .... | ||
+ | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=2301 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
+ | |||
+ | ===== Présentation ===== | ||
+ | |||
+ | **tar** c'est le couteau suisse de l'archivage et c'était l'outil de base sur les unix d'autrefois. (Haricophile dixit) :-D \\ | ||
+ | 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 : | ||
+ | [[doc:systeme:tar-commandes|Commandes tar pour débutant]] | ||
+ | |||
+ | |||
+ | |||
+ | ===== Syntaxe ===== | ||
+ | |||
+ | ==== Décompresser un fichier tar : ==== | ||
+ | === Les archives types gz === | ||
+ | |||
+ | 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) | ||
+ | |||
+ | === Les archives types bz2 === | ||
+ | |||
+ | 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. | ||
+ | |||
+ | == Exemple : == | ||
+ | |||
+ | <code user>tar xf archive.tar.<extension></code> | ||
+ | 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…). | ||
+ | <note tip>Tar ne se base pas sur l'extension il me semble mais sur l'entête qui au tout début du fichier indique le type de compression utilisé.</note> | ||
+ | |||
+ | //Voilà ma petite contribution.// | ||
+ | |||
+ | Merci à **enicar** et **Atys** sur le forum là : | ||
+ | * https://debian-facile.org/viewtopic.php?pid=243441#p243441 | ||
+ | |||
+ | ==== Compresser un fichier tar ==== | ||
+ | |||
+ | ===Exemple === | ||
+ | |||
+ | Toujours avec la même commande on créera une archive de tout mon répertoire : /home/mattux/opensuse | ||
+ | |||
+ | <code user>cd /home/mattux/</code> | ||
+ | <code user>tar cvzf opensuse.tgz opensuse</code> | ||
+ | |||
+ | 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 | ||
+ | |||
+ | |||
+ | |||
+ | ===== Les Options ===== | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ===== Utilisation - Sauvegarde ===== | ||
+ | |||
+ | 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 : | ||
+ | |||
+ | <code user>man tar</code> | ||
+ | |||
+ | ===== Utilisation - Copie ===== | ||
+ | |||
+ | 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''. | ||
+ | |||
+ | ===== Illustration avec différentes pratiques ===== | ||
+ | |||
+ | ==== Copier tout le contenu d'un répertoire ==== | ||
+ | |||
+ | Copier le contenu du répertoire ''rep_source'' vers le répertoire ''rep_dest'' : | ||
+ | |||
+ | * Se placer dans le répertoire de destination | ||
+ | |||
+ | <code user>cd rep_dest</code> | ||
+ | |||
+ | * Utiliser TAR | ||
+ | |||
+ | <code user>tar -C /chemin/rep_source -cvf - . | tar xvf -</code> | ||
+ | |||
+ | ==== Exclure la copie de fichiers ciblés ==== | ||
+ | |||
+ | Exclure tous les fichiers ''*.bak'' : | ||
+ | |||
+ | <code user> | ||
+ | cd rep_dest</code> | ||
+ | <code user>tar -C /chemin/rep_source --exclude *.bak -cvf - . | tar xvf - | ||
+ | </code> | ||
+ | |||
+ | ==== Exclure la copie de répertoires ciblés ==== | ||
+ | |||
+ | Exclure les répertoires ''source'' et ''extra'' : | ||
+ | |||
+ | <code user> | ||
+ | cd rep_dest</code> | ||
+ | <code user>tar -C /chemin/rep_source --exclude source --exclude extra -cvf - . | tar xvf - | ||
+ | </code> | ||
+ | |||
+ | ==== Exclure avec une liste ==== | ||
+ | |||
+ | Exclure une liste de fichiers et de répertoires. | ||
+ | |||
+ | === Créer le fichier d'exclusion === | ||
+ | |||
+ | Inscrivez dans un fichier, ''fichiers.txt'' par exemple, la liste des fichiers que vous ne souhaitez pas copier : | ||
+ | |||
+ | <file config fichiers.txt> | ||
+ | admin.php | ||
+ | serge.txt | ||
+ | compte.doc | ||
+ | password.txt | ||
+ | extra | ||
+ | source | ||
+ | </file> | ||
+ | |||
+ | === Commande TAR === | ||
+ | |||
+ | Puis vous passez ce fichier à ''tar'' : | ||
+ | |||
+ | <code user> | ||
+ | cd rep_dest</code> | ||
+ | <code user>tar -C /chemin/rep_source --exclude-from fichiers.txt -cvf - . | tar xvf - | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== Problèmes ==== | ||
+ | |||
+ | Avec par exemple un fichier ''ratatouille.tar.xz'' vous rencontrez le problème suivant : | ||
+ | |||
+ | <code user>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</code> | ||
+ | |||
+ | Le paquet [[https://packages.debian.org/bullseye/file|file]] vous informe de ceci : | ||
+ | |||
+ | <code user>file ratatouille.tar.xz | ||
+ | ratatouille.tar.xz: XZ compressed data</code> | ||
+ | |||
+ | vous pouvez alors installer le paquet suivant [[https://packages.debian.org/bullseye/xz-utils|xz-utils]]. | ||
+ | |||
+ | Puis pour extraire votre fichier faire : | ||
+ | <code user>tar -xf ratatouille.tar.xz</code> | ||
+ | Ou-bien pour décompresser : | ||
+ | <code user>xz -d -v ratatouille.tar.xz</code> | ||
+ | |||
+ | ===== Conclusion ===== | ||
+ | |||
+ | ''Tar'' vous permet bien d'autres subtilités impossibles à réaliser avec ''cp''. Voir l'aide de la page de manuel de ''tar'' : | ||
+ | |||
+ | <code user> | ||
+ | man tar</code> | ||
+ | |||
+ | <code user>info tar | ||
+ | </code> | ||
+ | |||
+ | ===== Lien : ===== | ||
+ | |||
+ | [[http://www.gnu.org/software/tar/manual/tar.html|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) | ||