En complément de ce qui a été dit précédemment par grawity y Paul :
L'histoire
Dans le passé, cpio (avec option -c
utilisé) a été les à utiliser pour déplacer des fichiers vers d'autres dérivés d'UNIX, car il était plus portable et plus flexible que goudron . Mais le goudron On peut considérer que les problèmes de portabilité sont résolus depuis la fin des années 1980.
Malheureusement, c'est à peu près à cette époque que différents vendeurs ont modifié le système. -c
format de cpio (il suffit de consulter la page de manuel de GNU cpio et l'option -H
). À l'époque, le goudron sont devenues plus portables que les cpio ... Il a fallu presque une décennie entière pour que les différents fournisseurs d'UNIX règlent ce problème. Ayant GNU tar y GNU cpio installé était indispensable pour tous les administrateurs qui devaient gérer des bandes provenant de différentes sources à l'époque (et encore aujourd'hui, je suppose).
Interface utilisateur
goudron peut utiliser un fichier de configuration de bande dans lequel l'administrateur configure les lecteurs de bande connectés au système. L'utilisateur n'a plus qu'à dire "Je prends le lecteur de bande 1" au lieu de devoir se souvenir du nœud de périphérique exact de la bande (ce qui peut être très déroutant et n'est pas non plus standardisé sur les différentes plates-formes UNIX).
Mais la principale différence est la suivante :
goudron est capable d'effectuer des recherches dans les répertoires de manière autonome et prend la liste des fichiers ou des répertoires à sauvegarder dans les arguments de la ligne de commande.
cpio n'archive que les fichiers ou les répertoires qui lui sont demandés, mais n'effectue pas de recherche récursive dans les sous-répertoires. En outre, le cpio obtient la liste des éléments à archiver à partir de stdin - C'est pourquoi il est presque toujours utilisé en combinaison avec trouver .
A cpio La commande semble souvent effrayante pour le débutant si elle est comparée à la commande goudron :
$ find myfiles -depth -print0 | cpio -ovc0 | gzip -7 > myfiles.cpio.gz
$ tar czvf myfiles.tar.gz myfiles
Je pense que c'est la raison principale pour laquelle la plupart des gens utilisent goudron pour créer des fichiers d'archives : Pour les tâches simples comme le regroupement d'un répertoire complet, il est tout simplement plus facile à utiliser.
En outre GNU tar offre la possibilité -z
ce qui entraîne la compression de l'archive avec GNU zip à la volée, ce qui rend les choses encore plus faciles.
D'autre part, il est possible de faire des choses intéressantes avec trouver & cpio . En fait, il s'agit d'une approche plus proche de celle d'UNIX : Pourquoi inclure la recherche dans l'arborescence des répertoires dans cpio s'il existe déjà un outil qui prend en charge presque tout ce à quoi on peut penser : trouver . On pense notamment à ne sauvegarder que les fichiers plus récents qu'une certaine date, à limiter les fichiers à ceux qui résident dans le même système de fichiers ou à filtrer les résultats de la recherche avec la fonction grep -v
pour exclure certains fichiers...
Le peuple de GNU tar a fait beaucoup d'efforts pour inclure un grand nombre de ces choses qui n'étaient auparavant possibles qu'avec la cpio . En fait, les deux outils ont appris l'un de l'autre - mais seulement cpio peut lire le format de goudron - et non l'inverse.
goudron et le traitement des résultats
Une dernière remarque sur ce que vous avez dit :
On m'a également dit que TAR ne peut pas compresser à partir de STDOUT. Je veux archiver / compresser des instantanés ZFS pour les sauvegardes. [ ] CPIO avec bzip2 pour obtenir cet effet.
Eh bien, toutes les versions de goudron (GNU ou non) peuvent être utilisés dans un tube. Il suffit d'utiliser le signe moins ( -
) comme nom d'archive :
$ tar cvf - myfiles | bzip > myfiles.tar.bz
En outre GNU tar offre la possibilité --to-command
pour spécifier une commande du postprocesseur - bien que je préfère encore le pipe. Cela peut être utile pour écrire sur certains périphériques matériels.