Newer
Older
cours-unix-shell / output / commandes / compression.html
<!DOCTYPE html>
<html>

<head>
    <title></title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <header>
        <h1></h1>
        <nav>
            <ul>
                <li><a href="/output/README.html">Accueil</a></li>
                <li><a href="/output/unix/README.html">UNIX</a></li>
                <li><a href="/output/bases/README.html">Bases</a></li>
                <li><a href="/output/commandes/README.html">Commandes</a></li>
                <li><a href="/output/shell/README.html">Shell</a></li>
                <li><a href="/output/sed/README.html">Sed</a></li>
                <li><a href="/output/make/README.html">Make</a></li>
            </ul>
        </nav>
    </header>

    <div class="content">
        <h1 id="archives-compression-décompression">Archives, compression, décompression</h1>
        <h2 id="tar">tar</h2>
        <p>Cette commande permet de créer un fichier archive (appelé <em>tarfile</em>) qui peut contenir des fichiers et répertoires.<br />
        Ce fichier <em>tarfile</em> n'est pas compressé.<br />
        Cette commande peut être utile pour archiver un répertoire et tout ce qu'il contient en un seul fichier.</p>
        <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">tar</span> -cvf Archives.tar Sauvegarde</code></pre></div>
        <p>La commande ci-dessus, avec les paramètres <code>-cvf</code>, permet de créer une archive du répertoire <code>Sauvegarde</code> dans le fichier nommé <code>Archives.tar</code>. Attention à l'ordre des deux derniers paramètres.</p>
        <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">tar</span> -xvf Archives.tar</code></pre></div>
        <p>La même commande <code>tar</code> avec les paramètres <code>-xvf</code>, permet de désarchiver le contenu du <em>tarfile</em>.<br />
        Attention au positionnement du désarchivage : il s'opère dans le répertoire courant.</p>
        <p>Pour connaître le détail du contenu d'un <em>tarfile</em>, il faut utiliser les paramètres <code>-tvf</code>.</p>
        <h2 id="gzip">gzip</h2>
        <p>Cette commande permet de compresser un fichier afin d'en réduire la taille, pour stockage ou échange.<br />
        Le fichier résultat est renommé par ajout de l'extension <code>.gz</code> :</p>
        <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">gzip</span> corpus.xml</code></pre></div>
        <p>Par listing du contenu du répertoire où la compression a été réalisée, on peut voir que le fichier <code>corpus.xml</code> a disparu et a été remplacé par <code>corpus.xml.gz</code>.</p>
        <p>Il est possible d'obtenir la taille d'un fichier non compressé à partir de son fichier compressé en gzip.</p>
        <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">gzip</span> -l corpus.xml.gz</code></pre></div>
        <p>Quatre informations sont alors affichées à l'écran :</p>
        <ol type="1">
        <li>la taille en octets du fichier compressé</li>
        <li>la taille en octets du fichier non compressé</li>
        <li>le ratio de compression</li>
        <li>le nom du fichier initial, non compressé</li>
        </ol>
        <pre class="txt"><code>compressed uncompr. ratio uncompressed_name
        77366      370713   79.1% corpus.xml</code></pre>
        <h2 id="gunzip">gunzip</h2>
        <p>Cette commande permet de décompresser un fichier compressé en <code>.gz</code>.<br />
        Sans paramètres, le fichier est décompressé sur disque et renommé sans l'extension <code>.gz</code>.<br />
        Attention, la place en octets prise correspond bien au fichier décompressé.<br />
        Cette commande est équivalente à <code>gzip -d</code>.</p>
        <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">gunzip</span> corpus.xml.gz</code></pre></div>
        <p>La commande ci-dessus restaure le fichier <code>corpus.xml</code>, qui remplace dans le répertoire courant l'ancien fichier <code>corpus.xml.gz</code> de plus petite taille.</p>
        <p>S'il faut travailler avec un fichier compressé sans le décompresser sur disque, il faut alors qu'il soit seulement décompressé vers la sortie standard.<br />
        Ensuite, il suffira d'enchaîner les commandes requises avec des pipes.<br />
        Par exemple :</p>
        <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">gunzip</span> -c corpus.xml.gz <span class="kw">|</span> <span class="fu">wc</span> -l</code></pre></div>
        <h2 id="zcat">zcat</h2>
        <p>Cette commande est équivalente à <code>gunzip -c</code>.</p>
        <div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">zcat</span> corpus.xml.gz <span class="kw">|</span> <span class="fu">wc</span> -l</code></pre></div>
        <p><a href="./droits.html">Précédent</a> - <a href="processus.html">Suivant</a></p>
    </div>

    <footer>
        <p>&copy; CNRS 2023</p>
    </footer>
</body>

</html>