<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Archivage et compression de données</title><meta name="generator" content="DocBook XSL Stylesheets V1.64.0"><link rel="home" href="index.html" title="Manuel de référence"><link rel="up" href="cmdutils.html" title="Chapitre 5. Les utilitaires en ligne de commande"><link rel="previous" href="command-at.html" title="at : programmer une commande une seule fois"><link rel="next" href="command-many.html" title="Etc..."></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Archivage et compression de données</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="command-at.html">Précédent</a> </td><th width="60%" align="center">Chapitre 5. Les utilitaires en ligne de commande</th><td width="20%" align="right"> <a accesskey="n" href="command-many.html">Suivant</a></td></tr></table><hr></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="command-archivers"></a>Archivage et compression de données</h2></div></div><div></div></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="command-tar"></a>tar : Tape ARchiver (archiveur sur bandes)</h3></div></div><div></div></div><p><a name="BId-cmdutils-pa104"></a><a class="indexterm" name="BId-cmdutils-it5"></a>Bien que nous ayons déjà vu une utilisation de <span><b class="command">tar</b></span> dans le chapitre <a href="install-free-software-chapter.html" title="Chapitre 12. Installation d'un logiciel libre">Chapitre 12, <i>Installation d'un logiciel libre</i></a>, nous n'avons pas expliqué son fonctionnement. C'est maintenant ce que nous nous proposons de faire. De même que <span><b class="command">find</b></span>, <span><b class="command">tar</b></span> est un utilitaire <span class="application">UNIX</span> de longue date, et sa syntaxe est un peu spéciale :</p><p><a name="BId-cmdutils-pa105"></a> <a name="BId-cmdutils-sc14"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">tar [options] [fichiers...] </pre></td></tr></table><p> </p><p><a name="BId-cmdutils-pa106"></a>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 pour cela car elles ne sont pas listées ici.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left">Note</th></tr><tr><td colspan="2" align="left" valign="top"><p><a name="BId-cmdutils-pa107"></a>le tiret initial (<tt class="literal">-</tt>) des options courtes est maintenant désuet pour la commande <span><b class="command">tar</b></span>, sauf après une option longue.</p></td></tr></table></div><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-cmdutils-pa108"></a><tt class="option">c</tt> : à utiliser pour créer de nouvelles archives.</p></li><li><p><a name="BId-cmdutils-pa109"></a><tt class="option">x</tt> : à utiliser pour extraire des fichiers depuis une archive existante.</p></li><li><p><a name="BId-cmdutils-pa110"></a><tt class="option">t</tt> : affiche la liste des fichiers d'une archive existante. </p></li><li><p><a name="BId-cmdutils-pa111"></a><tt class="option">v</tt> : affichera simplement la liste des fichiers au fur et à mesure qu'ils sont ajoutés à une archive ou extraits d'une archive ; ou, en conjonction avec l'option <tt class="option">t</tt> ci-dessus, produira un affichage long des fichiers au lieu d'un affichage court.</p></li><li><p><a name="BId-cmdutils-pa112"></a><tt class="option">f <fichier></tt> : pour créer une archive de nom <tt class="option"><fichier></tt>, extraire depuis l'archive <tt class="option"><fichier></tt> ou faire une liste des fichiers de l'archive <tt class="option"><fichier></tt>; si cette option n'est pas disponible, le fichier par défaut sera <tt class="filename">/dev/rmt0</tt>, qui est généralement le fichier spécial associé à un <a name="BId-cmdutils-gt8" href="glossary.html#term-streamer"><i class="glossterm"> <span class="foreignphrase"><i class="foreignphrase">streamer</i></span> </i></a>. Si le paramètre <tt class="literal">fichier</tt> est un tiret (<tt class="literal">-</tt>), l'entrée ou la sortie (selon que vous extrayez depuis une archive ou en créez une), sera associée à l'entrée standard ou la sortie standard.</p></li><li><p><a name="BId-cmdutils-pa113"></a><tt class="option">z</tt> : énonce à <span><b class="command">tar</b></span> que l'archive à créer devra être compressée avec <span><b class="command">gzip</b></span>, ou que l'archive depuis laquelle on fait l'extraction est compressée avec <span><b class="command">gzip</b></span>.</p></li><li><p><a name="BId-cmdutils-pa114"></a><tt class="option">j</tt> : même chose que pour <tt class="option">z</tt>, mais le programme utilisé pour la compression est <span><b class="command">bzip2</b></span>;</p></li><li><p><a name="BId-cmdutils-pa115"></a><tt class="option">p</tt> : 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.</p></li><li><p><a name="BId-cmdutils-pa116"></a><tt class="option">r</tt> : ajoute la liste des fichiers donnée sur la liste de commande à une archive existante ; notez que l'archive à laquelle vous voulez ajouter des fichiers ne doit <span class="emphasis"><em>pas</em></span> être compressée !</p></li><li><p><a name="BId-cmdutils-pa117"></a><tt class="option">A</tt> : fusionne les archives données sur la ligne de commande à celle mentionnée avec l'option <tt class="option">f</tt>. De même que pour l'option <tt class="option">r</tt>, les archives ne doivent pas être compressées pour que cela fonctionne.</p></li></ul></div><p><a name="BId-cmdutils-pa118"></a>Il y a en fait beaucoup, beaucoup d'autres options. Référez-vous à la page de manuel de<span class="citerefentry"><span class="refentrytitle"><a name="BId-cmdutils-rt3"></a>tar</span>(1)</span> pour en obtenir une liste complète (entre autres l'option <tt class="option">d</tt>, par exemple). Maintenant, passons à la pratique ! Supposons que vous vouliez créer une archive de toutes les images dans le répertoire <tt class="filename">/shared/images</tt>, compressée avec <span><b class="command">bzip2</b></span>, de nom <tt class="filename">images.tar.bz2</tt> et située dans votre répertoire personnel. Vous taperez alors :</p><p><a name="BId-cmdutils-pa119"></a> <a name="BId-cmdutils-sc15"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen"> # # Note: vous devez être dans le répertoire # contenant les fichiers de l'archive! # $ cd /shared $ tar cjf ~/images.tar.bz2 images/</pre></td></tr></table><p> </p><p><a name="BId-cmdutils-pa120"></a>Comme vous le constatez, nous avons utilisé trois options ici : <tt class="option">c</tt> a indiqué à <span><b class="command">tar</b></span> de créer une archive ; <tt class="option">j</tt> lui énonce que nous voulons qu'elle soit compressée avec <span><b class="command">bzip2</b></span>, et <tt class="option">f ~/images.tar.bz2</tt> lui signale que l'archive devait être créée dans notre répertoire personnel, avec le nom <tt class="filename">images.tar.bz2</tt>. Maintenant, il faut peut-être vérifier si l'archive est valide. Ceci se fera simplement en affichant la liste de ses fichiers :</p><p><a name="BId-cmdutils-pa121"></a> <a name="BId-cmdutils-sc16"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen"> # # Retour à notre répertoire personnel # $ cd $ tar tjvf images.tar.bz2</pre></td></tr></table><p> </p><p><a name="BId-cmdutils-pa122"></a>Ici, nous avons demandé à <span><b class="command">tar</b></span> d'afficher la liste (<tt class="option">t</tt>) des fichiers de l'archive <tt class="filename">images.tar.bz2</tt> (<tt class="option">f images.tar.bz2</tt>), en ayant averti que cette archive était compressée avec <span><b class="command">bzip2</b></span> (<tt class="option">j</tt>), et que nous voulions un format d'affichage long (<tt class="option">v</tt>). 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 <tt class="filename">/shared</tt>. Mais comme vous ne voulez pas casser votre commande <span><b class="command">find</b></span> pour trouver les nouvelles images, vous devez préserver les attributs de tous les fichiers :</p><p><a name="BId-cmdutils-pa123"></a> <a name="BId-cmdutils-sc17"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen"> # # Rendez-vous dans le répertoire où vous voulez # extraire # $ cd /shared $ tar jxpf ~/images.tar.bz2 </pre></td></tr></table><p> </p><p><a name="BId-cmdutils-pa124"></a>Et voilà le travail !</p><p><a name="BId-cmdutils-pa125"></a> Maintenant, supposons que vous vouliez seulement extraire le répertoire <tt class="filename">images/cars</tt> de l'archive. Vous pouvez alors taper ceci : </p><p><a name="BId-cmdutils-pa126"></a> <a name="BId-cmdutils-sc18"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">$ tar jxf ~/images.tar.bz2 images/cars</pre></td></tr></table><p> </p><p><a name="BId-cmdutils-pa127"></a>Au cas où cela vous inquiéterait, il n'y a pas de quoi ! Si vous essayez d'archiver des fichiers spéciaux, <span><b class="command">tar</b></span> les prendra tels qu'ils sont, des fichiers spéciaux, et n'ira pas chercher leur contenu. Donc oui, vous pouvez mettre sans risque <tt class="filename">/dev/mem</tt> 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 <tt class="option">h</tt> dans la page de manuel.</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="command-bzip2"></a>bzip2 et gzip : compression de données</h3></div></div><div></div></div><p><a name="BId-cmdutils-pa128"></a> <a class="indexterm" name="BId-cmdutils-it6"></a> <a class="indexterm" name="BId-cmdutils-it7"></a> Vous vous souvenez que nous avons déjà parlé de ces deux programmes quand nous avons évoqué <span><b class="command">tar</b></span>. Contrairement à <span class="application">WinZip</span> sous <span class="application">windows</span>, l'archivage et la compression sont faits en utilisant deux programmes séparés (<span><b class="command">tar</b></span> pour l'archivage, et les deux programmes que nous allons maintenant présenter, <span><b class="command">bzip2</b></span> et <span><b class="command">gzip</b></span>, pour compresser). D'autres outils de compression existent sous <span class="application">GNU/Linux</span>, comme <span><b class="command">zip</b></span>, <span><b class="command">arj</b></span> ou <span><b class="command">rar</b></span> mais sont rarement utilisés.</p><p><a name="BId-cmdutils-pa129"></a>À l'origine, <span><b class="command">bzip2</b></span> a été écrit en tant que remplacement pour <span><b class="command">gzip</b></span>. Ses possibilités de compression sont en général meilleures. Mais, d'un autre côté, il consomme plus de mémoire. La raison pour laquelle <span><b class="command">gzip</b></span> est encore là est qu'il est encore beaucoup plus répandu que <span><b class="command">bzip2</b></span>. Peut-être qu'un jour <span><b class="command">bzip2</b></span> remplacera complètement <span><b class="command">gzip</b></span> ou peut-être pas ? </p><p><a name="BId-cmdutils-pa130"></a>Les deux commandes ont une syntaxe similaire :</p><p><a name="BId-cmdutils-pa131"></a> <a name="BId-cmdutils-sc19"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">gzip [options] [fichier(s)] </pre></td></tr></table><p> </p><p><a name="BId-cmdutils-pa132"></a>Si aucun nom de fichier n'est donné, <span><b class="command">gzip</b></span> comme <span><b class="command">bzip2</b></span> 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 :</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-cmdutils-pa133"></a><tt class="option">-1</tt>, ..., <tt class="option">-9</tt> : 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.</p></li><li><p><a name="BId-cmdutils-pa134"></a><tt class="option">-d</tt> : décompresse un ou des fichier(s) ; c'est l'équivalent de la commande <span><b class="command">gunzip</b></span> ou de <span><b class="command">bunzip2</b></span>.</p></li><li><p><a name="BId-cmdutils-pa135"></a><tt class="option">-c</tt> : envoie le résultat de la compression/décompression des fichiers donnés en paramètre sur la sortie standard.</p></li></ul></div><p><a name="BId-cmdutils-pa136"></a>Attention ! Par défaut, si vous n'utilisez pas l'option <tt class="option">-c</tt>, <span><b class="command">gzip</b></span> et <span><b class="command">bzip2</b></span> effaceront le ou les fichier(s) qu'ils ont compressés (ou décompressés). Vous pouvez éviter cela avec <span><b class="command">bzip2</b></span> en utilisant l'option <tt class="option">-k</tt>. <span><b class="command">gzip</b></span>, cependant, ne possède pas une telle option !</p><p><a name="BId-cmdutils-pa137"></a> Quelques exemples seront utiles. Supposons que vous vouliez compresser tous les fichiers se terminant par <tt class="filename">.txt</tt> dans le répertoire courant avec <span><b class="command">bzip2</b></span>, utilisez alors : <a name="BId-cmdutils-sc20"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">$ bzip2 -9 *.txt</pre></td></tr></table><p> Supposons que vous vouliez partager votre archive d'images avec quelqu'un, mais qu'il ne dispose pas de <span><b class="command">bzip2</b></span>, mais uniquement de <span><b class="command">gzip</b></span>. 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 : <a name="BId-cmdutils-sc21"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">bzip2 -dc images.tar.bz2 | gzip -9 >images.tar.gz</pre></td></tr></table><p> Et voilà le travail ! Vous pourriez d'ailleurs avoir tapé <span><b class="command">bzcat</b></span> au lieu de <span><b class="command">bzip2 -dc</b></span>. Il existe un équivalent pour <span><b class="command">gzip</b></span> mais son nom est <span><b class="command">zcat</b></span>, et non pas <span><b class="command">gzcat</b></span>. Vous disposez aussi de <span><b class="command">bzless</b></span> (resp. <span><b class="command">zless</b></span>) 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 <span><b class="command">bzless</b></span> ou <span><b class="command">zless</b></span>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="command-at.html">Précédent</a> </td><td width="20%" align="center"><a accesskey="u" href="cmdutils.html">Niveau supérieur</a></td><td width="40%" align="right"> <a accesskey="n" href="command-many.html">Suivant</a></td></tr><tr><td width="40%" align="left" valign="top">at : programmer une commande une seule fois </td><td width="20%" align="center"><a accesskey="h" href="index.html">Sommaire</a></td><td width="40%" align="right" valign="top"> Etc...</td></tr></table></div></body></html>