cpio ist ein nettes Hilfesmittelchen zum Ein- und Auspacken von Verzeichnisinhalten. Dummerweise ist die man page zuerst recht unverständlich, die Dokumentation im Netz jedoch sehr klar, wenn man von so wundersamen Formulierungen wie der Folgenden absieht:
In copy-out mode, cpio copies files into an archive.
Damit ist die Eselsbrücke schon abgebrochen. Warum nicht:
In copy-out mode, cpio copies files out of a directory and to an archive.
Die praktischen Schalterchen im Überblick:
ls | cpio -ov > directory.cpio
Einpacken eines Verzeichnisses ohne Unterverzeichnisse.
find . -print -depth | cpio -ov > dirtree.cpio
Einpacken eines Verzeichnisses mit Unterverzeichnissen.
cpio -iv < directory.cpio
Auspacken des Archivs in das aktuelle Verzeichnis.
cpio -idv < dirtree.cpio
Auspacken eines Verzeichnisbaumes in das aktuelle Verzeichnis.
Beide Schritte, ein- und auspacken, lassen sich auch mit dem Schalter -p (pass mode) kombinieren:
find . -depth -print0 | cpio –null -pvd anderesverz
Die Optionen an find helfen bei der Fehlervermeidung in Kombination mit dem –null bei cpio. anderesverz ist das Zielverzeichnis, in das der Inhalt des aktuellen Verzeichnisses kopiert wird.
find . -print -depth | cpio -ov -H tar > dirtree.cpio.tar
Der Schalter -H erlaubt die Angabe von Archivformaten – im Beispiel oben wäre das dann tar. Da das aber viel länger ist als
tar cfz dirtree.tar.gz directoryname
das darüber hinaus noch stärker komprimierte Archive erzeugt, ist die Option wohl für die Katz. Die oben angegebene Seite listet allerdings Archivformate, die Historiker durchaus interessieren könnten. Mit cpio bekommt man die dann in den Griff.