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) — tape archive — et cpio(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
# Correction
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 4.
Je voulais dire : « est supérieur au format tar », évidemment.
[^] # Re: Correction
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 5.
Ça serait bien que les admodos laissent une trace visible de leurs modifications. Y a rien de mal à corriger une erreur, mais c'est mieux de l'indiquer clairement.
Transparence, toussa…
[^] # Re: Correction
Posté par patrick_g (site web personnel) . Évalué à 8.
Tu imagines un journal qui se terminerai par:
NdM 11h32 : Ajout d'un s final au mot "périphérique".
NdM 11h42 : Majuscule au début de la phrase "Quant à pax".
NdM 13h06 : Remplacement de "que format tar" par "au format tar".
Ce serait ridicule. Et puis les news noyau doubleraient de taille après inclusion de la liste des corrections de fautes ;-)
[^] # Re: Correction
Posté par nomorsad . Évalué à 3.
Transparence, toussa...
[^] # Re: Correction
Posté par BAud (site web personnel) . Évalué à 3.
Vous me faites bien rire avec votre transparence, elle est belle la confiance que vous mettez dans vos modérateurs ;-) (et oui, c'est bien moi qui ai effectué la correction de typo et je vous laisse retrouver les autres modifications subrepticement effectuées vu votre choix du terme "transparence" et une allusion douteuse qui me vient à l'esprit en le lisant).
[^] # Re: Correction
Posté par campagnard . Évalué à 5.
[^] # Re: Correction
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 2.
« NdM : corrections orthographiques/grammaticales. »
« NdM : correction URL. »
« NdM : ajout troll religio-politique subliminal. »
(et j'imagine un journal qui se termineraiT :P)
[^] # Re: Correction
Posté par claudex . Évalué à 0.
NdM : corrections orthographiques/grammaticales.
NdM : corrections orthographiques/grammaticales.
NdM : corrections orthographiques/grammaticales.
C'est super pratique.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Correction
Posté par campagnard . Évalué à 10.
Oui, c'est super pratique, le pluriel.
[^] # Re: Correction
Posté par claudex . Évalué à 1.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Correction
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 2.
On veut juste savoir que qq1 est passé corriger à un moment ou un autre.
Comme un « last edited by Machin. »
[^] # Re: Correction
Posté par netsurfeur . Évalué à 1.
NdM : correction orthographique/grammaticale.
# Sérieusement?
Posté par Damien Thébault . Évalué à 10.
Déjà si t'arrives à trouver un use-case réaliste ça sera bien.
[^] # Re: Sérieusement?
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 6.
[^] # Re: Sérieusement?
Posté par Jerome Herman . Évalué à 2.
Déjà si t'arrives à trouver un use-case réaliste ça sera bien.
A part tous les programmes qui dialoguent par socket avec des droits d'accès spécifiques, ça ne présente pas trop d'intérêt en effet.
Chez moi ça ne représente que les filtres mails, le greylisting, les proxy et les workers HTTP et les IPC de tout un tas de scripts Bash que j'utilise pour l'administration de mes serveurs en vrrp/carp.
[^] # Re: Sérieusement?
Posté par kikicnrv . Évalué à 10.
[^] # Re: Sérieusement?
Posté par Batchyx . Évalué à 2.
[^] # Re: Sérieusement?
Posté par Jerome Herman . Évalué à 3.
Si bien sur, il ne me reste plus qu'à descendre les droits à la main pour que ca marche correctement.
[^] # Re: Sérieusement?
Posté par Batchyx . Évalué à 3.
Les sockets unix, c'est comme pour tout les sockets, n'importe qui peut se connecter n'importe ou. Le seul avantage des sockets unix par rapport aux socket TCP, c'est qu'on est sur que ce n'est pas écoutable facilement (puisque ça ne sort pas de la machine).
[^] # Re: Sérieusement?
Posté par Jerome Herman . Évalué à 5.
Certes, mais ça juste marche sous Linux, FreeBSD, OpenBSD et HP-UX pour ceux que j'ai testé.
Sous Linux et FreeBSD ca supporte même très bien les ACLs.
De façon générale, je ne cherche de toute façon pas ici à créer un programme portable, mais à faire une sauvegarde d'un système sur lequel je ne suis pas forcément le seul à travailler. De fait je ne sais pas si il y a quelque part une socket qui utilise les droits d'accès fichiers, et si je peux ne pas le savoir (ie ne pas passer deux heures à comprendre pourquoi la restauration ne passe pas, ou pire avoir des données corrompues silencieusement pendant une ou deux semaines avant que quelqu'un ne découvre le pot aux roses), ca m'arrange.
[^] # Re: Sérieusement?
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 2.
1. c'est logique ;
2. c'est tout l'intérêt des sockets Unix : sans ça, autant faire du réseau local normalement.
[^] # Re: Sérieusement?
Posté par Batchyx . Évalué à 2.
2. Tu peux toujours faire appliquer des droits à tes sockets en les plaçant dans des répertoires sur lequel tu positionne les droits. En plus ça élimine le problème insoluble du post.
[^] # Re: Sérieusement?
Posté par Pierre Tramo (site web personnel) . Évalué à 6.
[^] # Re: Sérieusement?
Posté par Aldoo . Évalué à 1.
(voilà, dévier le thread en troll religion : c'est fait !)
[^] # Re: Sérieusement?
Posté par windu.2b . Évalué à 4.
# Autres formats
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 4.
Il y a plusieurs alternatives à ces formats :
— zip : format déficient à l'origine — aussi déficient que DOS, quoi —, il est potable dans sa version Info-ZIP, sous *nix ;
— dar : un format intéressant, avec un outil dont l'interface en ligne de commande est documentée de façon assez confuse ;
— xar : à ma connaissance le format d'archive le plus moderne, malheureusement mort depuis 2007 alors qu'il pourrait évoluer (compression lzma, par exemple).
Pour un archivage très basique — pas de répertoires, que des fichiers à plat —, le format ar peut faire l'affaire. Pour des besoins basiques (répertoires, fichiers réguliers sans permission), n'importe quel format, tar, cpio, zip, peut faire l'affaire. Pour des besoins normaux (répertoires, fichiers réguliers, liens symboliques), tar et cpio conviennent. Et pour des besoins avancés, cpio convient, au prix d'inconvénients — pas de mutualisation des liens physiques, par exemple.
[^] # Re: Autres formats
Posté par téthis . Évalué à 2.
Je ne connaissais pas, une rapide recherche m'a conduit vers ce site et plus précisément vers cette page : https://code.google.com/p/xar/source/browse/trunk/xar/test/c(...)
On y voit : echo "Testing normal archival creation/extraction with lzma compression"
Il y a l'air d'avoir quand même un peu d'activité.
The capacity of the human mind for swallowing nonsense and spewing it forth in violent and repressive action has never yet been plumbed. -- Robert A. Heinlein
[^] # Re: Autres formats
Posté par barmic . Évalué à 5.
J'aime bien dissocier l'archivage de la compression.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Autres formats
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 4.
[^] # Re: Autres formats
Posté par Olivier (site web personnel) . Évalué à 8.
Je ne suis que moyennement d'accord avec l'intérêt de ceci, tout spécialement pour deux cas :
- afficher la liste des fichiers de l'archive.
+Dans le cas d'un archivage suivit d'une compression, tu ne peux pas récupérer la liste des fichiers, sans parcours intégral de tout le fichier. Si tu as 20 go d'archive en .tar.gz sur un disque en USB 1.0, cela prendra du temps pour récupérer la liste.
+ Par contre, dans le cas d'un archivage avec compression intégrée (zip, rar, etc....), le soft de décompression peut faire des "sauts" dans l'archive, afin de retrouver la liste des fichiers. Cela limite la quantité de données lues dans le fichier, donc le résultat arrivera plus vite
- résistance à la corruption :
+ Si tu prends un .tar.gz, et que tu le corromps (écriture aléatoire de données dans le fichier), l'extraction bloquera dès la première erreur trouvée
+ D'autres formats qui lient archivage et compression (arj par exemple) supportent largement mieux la corruption. Les données compressées situées dans la zone corrompu seront certes illisbles. Par contre, les autres, et tout spécialement ceux situés après la zone corrompu, seront extractable. On perdra donc quelque chose, mais pas tout...
# :)
Posté par HardShooter . Évalué à 10.
et tar c'est mieux que jamais ?
[^] # Re: :)
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 9.
Mieux vaut tar que gz
[^] # Re: :)
Posté par Anonyme . Évalué à 2.
# Emacs, c'est toi ?
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 10.
J'espère qu'il ne permet pas de lire ses emails, aller sur IRC, ni ed consulter un psy, sinon, ça sera encore un projet redondant…
[^] # Re: Emacs, c'est toi ?
Posté par feth . Évalué à 2.
# J’ajoute unp
Posté par Olivier (site web personnel) . Évalué à 6.
Donc unp toto.{zip, tar.gz, tar.bz2, tgz, rar, etc.} décompresse l’archive dans le répertoire courant. Normalement lancer unp sans rien donne la liste des formats supportés, mais ça ne fonctionne pas chez moi !
J’entends déjà (si, si) les sirène du « c’est mieux de connaître chaque outil ». Certes. Mais moi je me contente d’avoir besoin de décompresser un fichier et pour mon usage unp est parfait.
Quoi qu’il en soit, ça fait partie de mes indispensables de la console (avec autojump, bien entendu, puisqu’on vous dit qu’il faut utiliser autojump !)
[^] # Re: J’ajoute unp
Posté par alexissoft . Évalué à -10.
Puis fais gaffe hein, ensuite t'as un .zip, là c'est unzip tout court. Mais j'admets, c'est peut-être trop d'un coup là.
[^] # Re: J’ajoute unp
Posté par zebra3 . Évalué à 9.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: J’ajoute unp
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 10.
[^] # Re: J’ajoute unp
Posté par feth . Évalué à 4.
[^] # Re: J’ajoute unp
Posté par barmic . Évalué à 2.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: J’ajoute unp
Posté par lasher . Évalué à 2.
[^] # Re: J’ajoute unp
Posté par Tof . Évalué à 2.
Et en plus (et surtout), atools évite les Tarbomb.
J'ai une fonction shell qui va bien :
ax () {
if [ $# -eq 0 ]
then
echo 'Gimme a file to unpack !'
return
fi
if [ ! -x /usr/bin/atool ]
then
echo 'Need "atool"'
return
fi
if [ ! -x /bin/mktemp ]
then
echo 'Need "mktemp"'
return
fi
TMP=`mktemp /tmp/aunpack.XXXXXXXXXX`
atool -x --save-outdir=$TMP "$@"
DIR="`cat $TMP`"
[ "$DIR" != "" -a -d "$DIR" ] && cd "$DIR"
rm -i -rf $TMP
}
Et du coup, "ax toto.tgz" extrait toto.tgz et me place dans le répertoire créé.
(oui, c'est de la flemme)
[^] # Re: J’ajoute unp
Posté par superna (site web personnel) . Évalué à 2.
aunpack monfichier.tar.gz
Et ça évite les tarbomb tout seul....
Et c'est inclus avec atool !
Et il y a aussi apack ;-)
[^] # Re: J’ajoute unp
Posté par Tof . Évalué à 1.
aunpack est simplement un alias de "atool -x", mais la fonction magique (qui est donnée dans le man de atool) permet de se déplacer dans le répertoire créé (si un répertoire est créé).
# A la base
Posté par Philippe M (site web personnel) . Évalué à 4.
Son rôle était d'envoyer les fichiers sur la bande de la façon qui va bien.
Born to Kill EndUser !
[^] # Re: A la base
Posté par barmic . Évalué à 0.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: A la base
Posté par gnumdk (site web personnel) . Évalué à 3.
En effet, ce dernier note d'abord la taille du fichier à écrire puis le fichier, si la taille de ce dernier à changer entre temps, on risque de se retrouver avec des erreurs de redondance cyclique...
A noté que j'ai pas vu ce genre d'erreur depuis un moment sous Linux, GNUtar corrige peut être le probleme.
# Re: cpio c'est mieux que tar
Posté par tesiruna . Évalué à 1.
[^] # Re: cpio c'est mieux que tar
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 1.
[^] # Re: cpio c'est mieux que tar
Posté par Ton chat. . Évalué à 0.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.