URL: https://linuxfr.org/users/elessar/journaux/cpio-cest-mieux-que-tar Title: cpio c'est mieux que tar Authors: 🚲 Tanguy Ortolo Date: 2010年07月22日T01:45:58+02:00 Tags: archivage et cpio Score: 14 Cher journal, Cet après-midi, j'ai découvert un fait intéressant : le format d'archive cpio est supérieur au format tar. [tar(5)](http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5) — _tape archive_ — et [cpio(5)](http://www.freebsd.org/cgi/man.cgi?query=cpio&sektion=5) — _copy in, copy out_ — sont deux formats d'archive utilisés sous *nix. Ils ne sont pas identiques dans leur format interne, mais servent à la même chose : stocker des fichiers divers — réguliers, répertoires, etc. — avec leurs noms et leurs propriétés — droits, propriétaires, etc. Plusieurs versions de ces formats ont été publiées, pour étendre leurs capacités. Ces deux formats étant à peu près équivalents dans leur fonctionnalité, ils diffèrent en fait surtout par l'interface standard de l'outil canonique qui sert à les manipuler, respectivement, tar(1) et cpio(1) : tar prend sur sa ligne de commande les options, l'action à effectuer et les fichiers à insérer ou à extraire, alors que cpio prend la liste des fichiers à insérer ou à extraire sur son entrée standard. L'interface originale de cpio est très utile pour des cas spécifiques où l'on veut faire une sélection préciser des fichiers à archiver, avec un find(1) branché sur cpio. L'interface de tar, plus directe, a gagné la bataille, au point que l'outil cpio de GNU permet de manipuler des tarballs ! Pour mettre une fin à la guerre entre tar et cpio, un outil standard a été spécifié et développé : pax(1) — paix, et _portable archive_. Il s'agit uniquement d'un outil, et non d'un format. Cet outil permet de manipuler des archives cpio ou des tarballs, et dispose d'un mode à la tar — tout sur la ligne de commande — et d'un mode à la cpio — liste des fichiers en entrée standard. J'en viens au titre de cet article : cpio, c'est mieux. Pour une raison très simple : tar peut stocker des fichiers réguliers, des répertoires, des liens symboliques, des tubes nommés, des périphériques à blocs et des périphériques au caractère. C'est tout : il manque... les _sockets !_ Quant à cpio, et bien, lui, au moins, peut stocker tout type de fichier. On peut, de façon sûre, archiver un système de fichier complet en cpio, alors que dans un tarball, les sockets seraient perdues. Quant à pax, si j'en parle, c'est évidemment parce que l'interface de cpio est beaucoup trop contraignante dans la plupart des cas, et que pax permet donc de créer des archives cpio de façon simple : pax -zx cpio -wf toto.cpio.gz toto/ * **z** gzipper * **x cpio** utiliser le format cpio * **w** _write_, c'est à dire mode d'écriture d'une archive, autrement dit création * **f toto.cpio.gz** écrire dans toto.cpio.gz plutôt que sur la sortie standard