Archives tar : Différence entre versions

De La Mouche VII
Aller à la navigationAller à la recherche
m (revert vandalisme)
(nettoyage et ajouts)
 
Ligne 1 : Ligne 1 :
 
[[Catégorie:Informatique]]
 
[[Catégorie:Informatique]]
{{ébauche}}
+
 
'''''tar''''' est le programme d'archivage par excellence sous UNIX. Son utilisation n'est pas très intuitive au premier abord, mais on s'y fait vite.
+
'''''tar''''' est le programme d'archivage par excellence sous UNIX, aux côtés de ''cpio''. Son utilisation n'est pas très intuitive au premier abord, mais on s'y fait vite.
  
 
== Principe ==
 
== Principe ==
Ligne 14 : Ligne 14 :
  
 
Par exemple, pour afficher la liste des fichiers contenus dans une archive, il faut taper :
 
Par exemple, pour afficher la liste des fichiers contenus dans une archive, il faut taper :
  $> tar tvf archive.tar
+
  $ tar tvf archive.tar
 
* '''t''' : visualiser (je cherche toujours pourquoi '''t''')
 
* '''t''' : visualiser (je cherche toujours pourquoi '''t''')
 
* '''v''' : mode '''v'''erbeux (facultatif, permet d'obtenir plus d'informations sur les fichiers présents)
 
* '''v''' : mode '''v'''erbeux (facultatif, permet d'obtenir plus d'informations sur les fichiers présents)
Ligne 22 : Ligne 22 :
  
 
Pour décompresser les fichiers contenus dans une archive, il faut taper :
 
Pour décompresser les fichiers contenus dans une archive, il faut taper :
  $> tar xvf archive.tar
+
  $ tar xvf archive.tar
 
L'argument '''x''' (pour "eXtraire") a ici remplacé '''t''' ; les autres ont naturellement la même signification.
 
L'argument '''x''' (pour "eXtraire") a ici remplacé '''t''' ; les autres ont naturellement la même signification.
 
Si on omet l'argument '''v''', aucun message n'apparaîtra pour confirmer l'extraction de l'archive.
 
Si on omet l'argument '''v''', aucun message n'apparaîtra pour confirmer l'extraction de l'archive.
Ligne 31 : Ligne 31 :
  
 
Pour créer une archive de fichiers, la syntaxe est la suivante :
 
Pour créer une archive de fichiers, la syntaxe est la suivante :
  $> tar cvf archive.tar fichier1 [ fichier2 [ ... ] ]
+
  $ tar cvf archive.tar fichier1 [ fichier2 [ ... ] ]
 
On a maintenant l'argument '''c''' (pour '''c'''réer). Comme pour l'extraction, si on omet '''v''', la création de l'archive se fera silencieusement.
 
On a maintenant l'argument '''c''' (pour '''c'''réer). Comme pour l'extraction, si on omet '''v''', la création de l'archive se fera silencieusement.
  
Ligne 37 : Ligne 37 :
  
 
''Exemple : pour créer une archive ''ab.tar'' contenant les fichiers ''a.txt'' et ''b.txt'', il faut taper :''
 
''Exemple : pour créer une archive ''ab.tar'' contenant les fichiers ''a.txt'' et ''b.txt'', il faut taper :''
  $> tar cvf ab.tar a.txt b.txt
+
  $ tar cvf ab.tar a.txt b.txt
 
''Pour compresser le dossier ''sauvegardes'' dans une archive ''sauvegardes.tar'' :''
 
''Pour compresser le dossier ''sauvegardes'' dans une archive ''sauvegardes.tar'' :''
  $> tar cvf sauvegardes.tar sauvegardes
+
  $ tar cvf sauvegardes.tar sauvegardes
  
 
== Archives compressées ==
 
== Archives compressées ==
  
''tar'' est capable de traiter des archives compressées, entre autres dans les formats ''gzip'' (extension''.tar.gz'', plus rarement ''.tgz'') et ''bzip2'' (extension ''.tar.bz2'').
+
''tar'' est capable de traiter des archives compressées, entre autres dans les formats ''gzip'' (extension''.tar.gz'', plus rarement ''.tgz''), ''bzip2'' (extension ''.tar.bz2''), et plus récemment ''xz'' (extension ''.tar.xz'').
 
 
'''''Note :''' pour plus d'informations sur la compression de fichiers, voir la page [[Fichiers compressés gzip et bzip2]].''
 
  
Pour traiter de tels fichiers, ''tar'' dispose de l'option '''z''' (''gzip'') et '''j''' (''bzip2'').
+
Pour traiter de tels fichiers, ''tar'' dispose des options '''z''' (''gzip''), '''j''' (''bzip2'') et '''J''' (''xz'').
  
 
Visualisation :
 
Visualisation :
  $> tar tvfz archive_gzipée.tar.gz
+
  $ tar tvfz archive_gzipée.tar.gz
  $> tar tvfj archive_bzipée.tar.bz2
+
  $ tar tvfj archive_bzipée.tar.bz2
 
Extraction :
 
Extraction :
  $> tar xvfz archive_gzipée.tar.gz
+
  $ tar xvfz archive_gzipée.tar.gz
  $> tar xvfj archive_bzipée.tar.bz2
+
  $ tar xvfj archive_bzipée.tar.bz2
 
Création :
 
Création :
  $> tar cvfz archive_gzipée.tar.gz répertoire_à_compresser
+
  $ tar cvfz archive_gzipée.tar.gz répertoire_à_compresser
  $> tar cvfj archive_bzipée.tar.bz2 répertoire_à_compresser
+
  $ tar cvfj archive_bzipée.tar.bz2 répertoire_à_compresser
 +
 
 +
À noter que l'option de compression n'est plus nécessaire depuis longtemps pour la visualisation et l'extraction, on peut tout simplement appeler <code>tar tvf</code> ou <code>tar xvf</code> sur une archive compressée d'un format reconnu, et ''tar'' détectera le format de lui-même.
  
 
== Entrée et sortie standard ==
 
== Entrée et sortie standard ==
  
{{A faire}}
+
On peut travailler sur l'entrée ou la sortie standard en utilisant un tiret ({{code|-}}) en tant que nom de fichier.
 +
 
 +
L'exemple permet de copier des fichiers d'une partition à l'autre en conservant les propriétés des fichiers, sans créer d'archive intermédiaire (à noter que l'utilitaire ''cpio'' est plus indiqué pour ça). Copier le répertoire {{fich|/media/backup/mon_backup}} dans {{fich|/home}} :
 +
# tar -C /media/backup -cf - mon_backup | tar -C /home -xf -
 +
 
 +
Notez l'option {{code|-C}} qui permet d'exécuter ''tar'' depuis le répertoire spécifié en paramètre. Notez aussi le tiret devant les options de compression, nécessaire dans ce cas.
 +
 
 +
== Outils auxiliaires ==
 +
 
 +
Je recommande vivement l'utilisation des outils du paquet ''atool'', qui permettent de travailler de manière unifiée avec presque tous les formats d'archive existants, y compris donc les archives tar et leurs variantes compressées. J'utilise notamment ''als'', qui liste le contenu d'une archive, et ''aunpack'', qui permet de l'extraire dans un sous-répertoire, sans risque donc de polluer le répertoire courant.
 +
 
 +
(J'avais écrit mon propre utilitaire de visualisation et extraction d'archive, ''[https://code.lm7.fr/p/scripts/source/tree/master/compression_utils lz.sh]'' qui fournit les commandes ''lz'' et ''uz'' à la manière de ''mtools'', mais il faut avouer que les outils de ''atool'' sont plus puissants, et disponibles dans la plupart des distributions.)

Version actuelle datée du 3 septembre 2014 à 17:42


tar est le programme d'archivage par excellence sous UNIX, aux côtés de cpio. Son utilisation n'est pas très intuitive au premier abord, mais on s'y fait vite.

Principe

Sur la ligne de commande, le nom du programme tar doit être suivi d'une chaîne de caractères représentant chacun une directive. On omet le tiret généralement placé avant les options des programmes.

L'un de ces caractères correspond à l'action principale entreprise (généralement visualiser, extraire ou créer). Il ne peut y avoir qu'un seul de ces caractères, sans cela tar ne comprendra pas l'action à entreprendre (logique).

Les autres caractères sont des options supplémentaires.

Visualiser le contenu d'une archive

Par exemple, pour afficher la liste des fichiers contenus dans une archive, il faut taper :

$ tar tvf archive.tar
  • t : visualiser (je cherche toujours pourquoi t)
  • v : mode verbeux (facultatif, permet d'obtenir plus d'informations sur les fichiers présents)
  • f : traiter le fichier dont le nom suit (tar est prévu à l'origine pour les lecteurs de bandes magnétiques)

Extraire une archive

Pour décompresser les fichiers contenus dans une archive, il faut taper :

$ tar xvf archive.tar

L'argument x (pour "eXtraire") a ici remplacé t ; les autres ont naturellement la même signification. Si on omet l'argument v, aucun message n'apparaîtra pour confirmer l'extraction de l'archive.

Par défaut, l'arborescence est recréée telle qu'elle figure dans l'archive.

Créer une archive

Pour créer une archive de fichiers, la syntaxe est la suivante :

$ tar cvf archive.tar fichier1 [ fichier2 [ ... ] ]

On a maintenant l'argument c (pour créer). Comme pour l'extraction, si on omet v, la création de l'archive se fera silencieusement.

Il faut impérativement placer le nom de l'archive à créer avant les fichiers à mettre dedans. Les fichiers peuvent bien sûr être des répertoires. Par défaut l'arborescence est conservée dans l'archive.

Exemple : pour créer une archive ab.tar contenant les fichiers a.txt et b.txt, il faut taper :

$ tar cvf ab.tar a.txt b.txt

Pour compresser le dossier sauvegardes dans une archive sauvegardes.tar :

$ tar cvf sauvegardes.tar sauvegardes

Archives compressées

tar est capable de traiter des archives compressées, entre autres dans les formats gzip (extension.tar.gz, plus rarement .tgz), bzip2 (extension .tar.bz2), et plus récemment xz (extension .tar.xz).

Pour traiter de tels fichiers, tar dispose des options z (gzip), j (bzip2) et J (xz).

Visualisation :

$ tar tvfz archive_gzipée.tar.gz
$ tar tvfj archive_bzipée.tar.bz2

Extraction :

$ tar xvfz archive_gzipée.tar.gz
$ tar xvfj archive_bzipée.tar.bz2

Création :

$ tar cvfz archive_gzipée.tar.gz répertoire_à_compresser
$ tar cvfj archive_bzipée.tar.bz2 répertoire_à_compresser

À noter que l'option de compression n'est plus nécessaire depuis longtemps pour la visualisation et l'extraction, on peut tout simplement appeler tar tvf ou tar xvf sur une archive compressée d'un format reconnu, et tar détectera le format de lui-même.

Entrée et sortie standard

On peut travailler sur l'entrée ou la sortie standard en utilisant un tiret (-) en tant que nom de fichier.

L'exemple permet de copier des fichiers d'une partition à l'autre en conservant les propriétés des fichiers, sans créer d'archive intermédiaire (à noter que l'utilitaire cpio est plus indiqué pour ça). Copier le répertoire /media/backup/mon_backup dans /home :

# tar -C /media/backup -cf - mon_backup | tar -C /home -xf -

Notez l'option -C qui permet d'exécuter tar depuis le répertoire spécifié en paramètre. Notez aussi le tiret devant les options de compression, nécessaire dans ce cas.

Outils auxiliaires

Je recommande vivement l'utilisation des outils du paquet atool, qui permettent de travailler de manière unifiée avec presque tous les formats d'archive existants, y compris donc les archives tar et leurs variantes compressées. J'utilise notamment als, qui liste le contenu d'une archive, et aunpack, qui permet de l'extraire dans un sous-répertoire, sans risque donc de polluer le répertoire courant.

(J'avais écrit mon propre utilitaire de visualisation et extraction d'archive, lz.sh qui fournit les commandes lz et uz à la manière de mtools, mais il faut avouer que les outils de atool sont plus puissants, et disponibles dans la plupart des distributions.)