Tout comme find, tar est un utilitaire UNIX de longue date, et sa syntaxe est un peu spéciale :
tar [options] [fichiers...]
Voici maintenant une liste d'options. Notez que toutes celles-ci ont une option longue équivalente, mais vous devrez vous référer à la page de manuel de tar(1) pour cela, car elles ne sont pas listées ici.
![]() | Note |
---|---|
Le tiret initial
( |
x
: à
utiliser pour extraire des fichiers depuis une archive
existante.
v
: rend la sortie
plus « verbeuse ». Affiche la liste des
fichiers au fur et à mesure qu'ils sont ajoutés à une
archive ou extraits d'une archive. En conjonction avec
l'option t
ci-dessus, produit un
affichage long des fichiers au lieu d'un affichage
court.
f
<fichier>
: pour créer une archive de nom
fichier
, extraire depuis l'archive
fichier
ou faire une liste des fichiers de
l'archive fichier
. Si cette option n'est pas
disponible, le fichier par défaut sera
/dev/rmt0
, qui est généralement le fichier
spécial associé à un
streamer (soit un
dévideur ou un dérouleur de bande en continu, en français). Si
le paramètre fichier est un tiret (-
),
l'entrée ou la sortie (selon que vous extrayiez depuis une
archive ou en créiez une), sera associée à l'entrée standard ou
la sortie standard.
z
: énonce
à tar que l'archive à créer devra être compressée
avec gzip, ou que l'archive depuis laquelle on fait
l'extraction est compressée avec gzip.
j
: même
chose que pour z
, mais le programme utilisé pour la
compression est bzip2;
p
: lors
de l'extraction des fichiers d'une archive, préserve tous les
attributs de fichiers, y compris la propriété, la dernière date
d'accès et ainsi de suite ; très utile pour les sauvegardes de
systèmes de fichiers.
r
: ajoute la liste des
fichiers donnée sur la ligne de commande à une archive
existante ; notez que l'archive à laquelle vous voulez
ajouter des fichiers ne doit pas être
compressée !
A
: ajoute les archives
données sur la ligne de commande à celle mentionnée avec
l'option f
. De même que pour l'option
r
, les archives ne doivent pas être compressées
pour que cela fonctionne.
Il y a en fait beaucoup,
beaucoup d'autres options. Référez-vous à la page de manuel de
tar(1) pour en obtenir
une liste complète (entre autres, l'option
d
). Maintenant, passons à la pratique. Supposons
que vous vouliez créer une archive de toutes les images dans le
répertoire /shared/images
, compressée avec
bzip2, de nom images.tar.bz2
et située
dans votre répertoire personnel. Vous taperiez alors :
Voyons un exemple. Imaginons que
vous souhaitiez créer une archive de toutes les images du
répertoire /shared/images
, compréssée avec
bzip2, nommée images.tar.bz2
et
située dans votre répertoire /home
. Vous
taperiez alors :
# # Note: vous devez être dans le répertoire # contenant les fichiers de l'archive! # $ cd /shared $ tar cjf ~/images.tar.bz2 images/
Comme vous le constatez, nous avons
utilisé trois options ici : c
a indiqué à
tar de créer une archive ; j
lui énonce que nous voulons qu'elle soit compressée avec
bzip2, et f ~/images.tar.bz2
lui signale que l'archive devait être créée dans notre répertoire
personnel, avec le nom
images.tar.bz2
. Maintenant, il faut peut-être
vérifier si l'archive est valide. Ceci se fera simplement en
affichant la liste de ses fichiers :
# # Retour à notre répertoire personnel # $ cd $ tar tjvf images.tar.bz2
Ici, nous avons demandé à
tar d'afficher la liste (t
)
des fichiers de l'archive images.tar.bz2
(f images.tar.bz2
), en ayant averti que cette
archive était compressée avec bzip2
(j
), et que nous voulions un format d'affichage
long (v
). Maintenant, supposons que vous ayez
effacé le répertoire des images. Heureusement, votre archive est
intacte ! Vous voulez l'extraire de sa place originelle dans
/shared
. Mais comme vous ne voulez pas casser
votre commande find pour trouver les nouvelles
images, vous devez préserver les attributs de tous les
fichiers :
# # Rendez-vous dans le répertoire où vous voulez # extraire # $ cd /shared $ tar jxpf ~/images.tar.bz2
Maintenant, supposons que vous
vouliez seulement extraire le répertoire
images/cars
de l'archive. Vous pouvez alors
taper ceci :
$ tar jxf ~/images.tar.bz2 images/cars
Au cas où cela vous inquiéterait, il
n'y a pas de quoi ! Si vous essayez d'archiver des fichiers
spéciaux, tar les prendra tels qu'ils sont, des
fichiers spéciaux, et n'ira pas chercher leur contenu. Donc oui,
vous pouvez mettre sans risque /dev/mem
dans
une archive. La gestion des liens, d'autre part, s'accomplit aussi
correctement ; donc là non plus, pas d'inquiétude à avoir. Pour
les liens symboliques, regardez également l'option
h
dans la page de manuel.
Nous avons déjà parlé de ces deux programmes quand nous avons évoqué tar. Contrairement à WinZip® sous Windows®, l'archivage et la compression sont faits en utilisant deux programmes séparés (tar pour l'archivage, et les deux programmes que nous allons maintenant présenter, bzip2 et gzip, pour compresser). D'autres outils de compression existent sous GNU/Linux, comme zip, arj ou rar mais sont rarement utilisés.
À l'origine, bzip2 a été écrit en tant que remplacement pour gzip. Ses ratios de compression sont en général meilleurs. Mais d'un autre côté, il consomme plus de mémoire. Toutefois, gzip est toujours utilisé pour des raisons de compatibilité avec d'anciens systèmes.
Les deux commandes ont une syntaxe similaire :
gzip [options] [fichier(s)]
Si aucun nom de fichier n'est donné, gzip comme bzip2 attendra des données sur l'entrée standard et enverra le résultat sur la sortie standard. Les deux programmes sont donc en fait utilisables avec des tubes. Les deux commandes ont aussi un ensemble d'options similaires :
-1
, ...,
-9
: règle le degré de compression ;
plus le nombre est haut, plus la compression sera élevée, mais
mieux signifie aussi plus lent : on n'a rien sans
rien.
-d
:
décompresse un ou des fichier(s) ; c'est l'équivalent de la
commande gunzip ou de
bunzip2.
-c
: envoie
le résultat de la compression/décompression des fichiers donnés
en paramètre sur la sortie standard.
Attention ! Par défaut, si vous
n'utilisez pas l'option -c
,
gzip et bzip2 effaceront le
ou les fichier(s) qu'ils ont compressés (ou décompressés). Vous
pouvez éviter cela avec bzip2 en utilisant
l'option -k
. gzip, cependant,
ne possède pas une telle option !
Quelques exemples seront
utiles. Supposons que vous vouliez compresser tous les fichiers se
terminant par .txt
dans le répertoire courant
avec bzip2, utilisez alors :
$ bzip2 -9 *.txt
Supposons que vous vouliez partager votre archive d'images avec quelqu'un, mais qu'il ne dispose pas de bzip2, mais uniquement de gzip. Nul besoin de décompresser l'archive et de la compresser à nouveau : décompressez-la sur la sortie standard, utilisez un tube, compressez depuis l'entrée standard et redirigez le résultat vers la nouvelle archive :
bzip2 -dc images.tar.bz2 | gzip -9 >images.tar.gz
Vous auriez pu taper bzcat au lieu de bzip2 -dc. Il existe un équivalent pour gzip, mais son nom est zcat, et non gzcat. Vous disposez aussi de bzless pour les fichiers bzip2 et de zless pour les fichiers gzip si vous voulez directement visualiser des fichiers compressés sans avoir à les décompresser avant. Comme exercice, essayez de trouver la commande que vous auriez à taper pour voir des fichiers sans les décompresser, et sans utiliser bzless ou zless.