cpio

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.