cpio (copy in/out) ist tar sehr ähnlich, doch kann es im Gegensatz
dazu mit beschädigten Archiven umgehen. So kann man den unbeschadeten
Teil des Archivs meistens noch retten.
Allerdings funktioniert cpio nur auf Festplatten mit dem
Dateisystem ext2.
Will man die zu sichernden Dateien an cpio übergeben, müssen diese
nach einem speziellen Muster mitgeteilt werden. Pro übergebene
Zeile erwartet cpio einen Dateinamen. Daher verwendet man am Besten
eine Pipe:
user@linux $
ls *.tex | cpio -o > /mnt/disk2/backup-2
|
Bei dieser Befehlskette werden zuerst alle TeX-Dateien (Endung .tex)
aufgelistet und an cpio übergeben. Mit der Option -o wird die Datei
backup-2 erstellt.
Der Nachteil beim Aufruf über ls ist, das man keine Unterverzeichnisse
sichern kann. Verwendet man stattdessen find, kann man dieses Problem
mit der Option -depth umgehen:
user@linux $
find /home/jg/ -maxdepth 2 -depth | cpio -o > /mnt/disk2/backup-3
|
|
Mit find kann man sich nicht nur Verzeichnisebenen anzeigen lassen,
sondern Dateien auch auf ihre letzte Modifikation prüfen. Daher genügt
die Ergänzung des vorhin verwendeten Befehls um -mtime -5 um alle
Dateien zu erhalten, die in den letzten 5 Tagen geändert wurden:
user@linux $
find /home/jg/ -mtime -5 -maxdepth 2 -depth | cpio -o > /mnt/disk2/backup-4
|
Für weitere Optionen von find empfielt sich ein Blick in
man find.
|
Ein Nachteil von cpio ist die fehlende direkte Überprüfung der
gesicherten Dateien. Um einen wirklichen Vergleich zu machen,
müsste man die Dateien in ein anderes Verzeichnis entpacken und
mit Hilfe von diff sicherstellen, das die Dateien korrekt sind.
Es gibt aber wenigstens eine Möglichkeit, sich die Dateien im
Archiv anzeigen zu lassen:
user@linux $
cpio -itvI /mnt/disk2/backup-2
-rw-r--r-- 1 jg jg 100 Nov 5 20:03 /home/jg/test1.tex -rw-r--r-- 1 jg jg 91 Nov 1 19:24 /home/jg/test2.tex -rw-r--r-- 1 jg jg 212 Nov 4 17:05 /home/jg/test3.tex -rw-r--r-- 1 jg jg 69 Nov 5 15:38 /home/jg/test4.tex
|
Da die Option i das Archiv auspacken würde, setzt man um dies zu
Verhindern ein t davor. Über I teilt man das Verzeichnis mit und dank v
werden die Dateirechte ebenfalls ausgegeben.
|
user@linux $
cpio -id %lt; /mnt/disk2/backup-2
|
Damit werden die Dateien aus dem Archiv an ihren Platz zurück
kopiert, sofern die dort vorhandenen Dateien nicht identisch
oder älter sind.
|
|