Zum Inhalt springen

Diskussion:Cpio: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „etc.“ durch „und weitere“
K Textersetzung - „ “ durch „ “
 
Zeile 1: Zeile 1:
= Backup mit cpio =
= Backup mit cpio =
<tt>'''cpio'''</tt> erzeugt und verwaltet Dateiarchive verschiedener Formate
<tt>'''cpio'''</tt> erzeugt und verwaltet Dateiarchive verschiedener Formate


Zeile 18: Zeile 18:
'''Optionen'''
'''Optionen'''


{| class="wikitable sortable"
{| class="wikitable sortable"  
|-
|-
| | <tt>'''-a</tt> '''
| | <tt>'''-a</tt> '''
| | veranlaßt <tt>cpio</tt>, nach dem copy-out die letzte Zugriffszeit vor dem Lesen zurückzusetzen  
| | veranlaßt <tt>cpio</tt>, nach dem copy-out die letzte Zugriffszeit vor dem Lesen zurückzusetzen  
|-
|-
| | <tt>'''-A</tt> '''
| | <tt>'''-A</tt> '''
| | die Dateien werden an ein existierendes Archiv angehängt (nur im copy-out Modus auf Blockgeräten möglich)  
| | die Dateien werden an ein existierendes Archiv angehängt (nur im copy-out Modus auf Blockgeräten möglich)  
|-
|-
| | <tt>'''-b</tt> '''
| | <tt>'''-b</tt> '''
| | veranlaßt <tt>cpio</tt>, beim extrahieren von Daten die Bytes von Datenwörtern und Halbwörtern zu tauschen  
| | veranlaßt <tt>cpio</tt>, beim extrahieren von Daten die Bytes von Datenwörtern und Halbwörtern zu tauschen  
|-
|-
| | <tt>'''-B</tt> '''
| | <tt>'''-B</tt> '''
| | setzt die Blockgröße auf 5120 Bytes anstelle der voreingestellten 512 Bytes  
| | setzt die Blockgröße auf 5120 Bytes anstelle der voreingestellten 512 Bytes  
|-
|-
| | <tt>'''-block-size</tt><nowiki>=</nowiki>''Anzahl'' '''
| | <tt>'''-block-size</tt><nowiki>=</nowiki>''Anzahl'' '''
| | setzt die Blockgröße auf ''Anzahl''x512 Bytes  
| | setzt die Blockgröße auf ''Anzahl''x512 Bytes  
|-
|-
| | <tt>'''-c</tt> '''
| | <tt>'''-c</tt> '''
| | veranlaßt tar, das alte, portable ASCII Archivformat zu benutzen  
| | veranlaßt tar, das alte, portable ASCII Archivformat zu benutzen  
|-
|-
| | <tt>'''-C</tt> ''Größe'' '''
| | <tt>'''-C</tt> ''Größe'' '''
| | setzt die Blockgröße (''Größe'' in Bytes)  
| | setzt die Blockgröße (''Größe'' in Bytes)  
|-
|-
| | <tt>'''-d</tt> '''
| | <tt>'''-d</tt> '''
| | veranlaßt tar, beim Auspacken eines Archivs die notwendigen Verzeichnisse zu erzeugen, wenn sie noch nicht existieren  
| | veranlaßt tar, beim Auspacken eines Archivs die notwendigen Verzeichnisse zu erzeugen, wenn sie noch nicht existieren  
|-
|-
| | <tt>'''-E</tt> ''Datei'' '''
| | <tt>'''-E</tt> ''Datei'' '''
| | die Liste oder die regulären Ausdrücke zur Bestimmung der zu kopierenden Dateien wird aus der angegebenen Datei und nicht von der Standardeingabe gelesen  
| | die Liste oder die regulären Ausdrücke zur Bestimmung der zu kopierenden Dateien wird aus der angegebenen Datei und nicht von der Standardeingabe gelesen  
|-
|-
| | <tt>'''-f</tt> '''
| | <tt>'''-f</tt> '''
| | verkehrt die Wirkung der Listeoder des Musters ins Gegenteil; es werden die Dateien kopiert, die nicht auf das Muster passen  
| | verkehrt die Wirkung der Listeoder des Musters ins Gegenteil; es werden die Dateien kopiert, die nicht auf das Muster passen  
|-
|-
| | <tt>'''-F</tt><nowiki> [[</nowiki>''User''@ ]''Host'':]''Datei'' '''
| | <tt>'''-F</tt><nowiki> [[</nowiki>''User''@ ]''Host'':]''Datei'' '''
| | veranlaßt <tt>tar</tt>, die angegebene ''Datei'' als Archivdatei zu benutzen  
| | veranlaßt <tt>tar</tt>, die angegebene ''Datei'' als Archivdatei zu benutzen  
|-
|-
| | <tt>'''-force-local</tt> '''
| | <tt>'''-force-local</tt> '''
| | erzwingt die Interpretation eines Archivnamens bei den Optionen -F, -I und -O als lokale Datei, auch wenn in dem Dateinamen ein Doppelpunkt vorkommt  
| | erzwingt die Interpretation eines Archivnamens bei den Optionen -F, -I und -O als lokale Datei, auch wenn in dem Dateinamen ein Doppelpunkt vorkommt  
|-
|-
| | <tt>'''-H</tt> ''Format'' '''
| | <tt>'''-H</tt> ''Format'' '''
| | bestimmt eines der folgenden Archivformate (bei copy-in werden die unterstützten Formate automatisch erkannt):  
| | bestimmt eines der folgenden Archivformate (bei copy-in werden die unterstützten Formate automatisch erkannt):  


bin (Voreinstellung bei copy-out) veraltetes Binärformat  
bin (Voreinstellung bei copy-out) veraltetes Binärformat  
Zeile 75: Zeile 75:
hpodc das portable POSIX-1 Format von HPUX; unterscheidet sich in der Speicherung von Gerätedateien  
hpodc das portable POSIX-1 Format von HPUX; unterscheidet sich in der Speicherung von Gerätedateien  
|-
|-
| | <tt>'''-i</tt> '''
| | <tt>'''-i</tt> '''
| | schaltet <tt>cpio</tt> in den copy-in Modus; die in der Liste angegebenen Dateien werden aus dem Archiv in das System hinein kopiert  
| | schaltet <tt>cpio</tt> in den copy-in Modus; die in der Liste angegebenen Dateien werden aus dem Archiv in das System hinein kopiert  
|-
|-
| | <tt>'''-I</tt><nowiki> [[</nowiki>''User''@ ]''Host'':]''Datei'' '''
| | <tt>'''-I</tt><nowiki> [[</nowiki>''User''@ ]''Host'':]''Datei'' '''
| | verbindet die Standardeingabe von <tt>cpio</tt> mit der ''Datei''<nowiki>; gegebenenfalls wird die Verbindung zum Rechner </nowiki>''Host'' hergestellt und die Archivierung mit den Rechten von ''User'' ausgeführt  
| | verbindet die Standardeingabe von <tt>cpio</tt> mit der ''Datei''<nowiki>; gegebenenfalls wird die Verbindung zum Rechner </nowiki>''Host'' hergestellt und die Archivierung mit den Rechten von ''User'' ausgeführt  
|-
|-
| | <tt>'''-k</tt> '''
| | <tt>'''-k</tt> '''
| | ohne Funktion  
| | ohne Funktion  
|-
|-
| | <tt>'''-l</tt> '''
| | <tt>'''-l</tt> '''
| | wenn möglich werden Dateien nicht kopiert sondern symbolische Links erzeugt  
| | wenn möglich werden Dateien nicht kopiert sondern symbolische Links erzeugt  
|-
|-
| | <tt>'''-L</tt> '''
| | <tt>'''-L</tt> '''
| | im copy-out oder -pass Modus werden nicht die symbolischen Links kopiert, sondern die referenzierten Dateien  
| | im copy-out oder -pass Modus werden nicht die symbolischen Links kopiert, sondern die referenzierten Dateien  
|-
|-
| | <tt>'''-m</tt> '''
| | <tt>'''-m</tt> '''
| | das Datum der letzten Änderung bleibt beim Kopieren unverändert  
| | das Datum der letzten Änderung bleibt beim Kopieren unverändert  
|-
|-
| | <tt>'''-M</tt> ''Nachricht'' '''
| | <tt>'''-M</tt> ''Nachricht'' '''
| | veranlaßt cpio, die Nachricht auf die Standardfehlerausgabe zu schreiben, wenn das Backup-Medium voll ist; der Platzhalter `%d' kann benutzt werden, um in der Nachricht die laufende Nummer des aktuellen Bandes auszugeben (Start bei 1)  
| | veranlaßt cpio, die Nachricht auf die Standardfehlerausgabe zu schreiben, wenn das Backup-Medium voll ist; der Platzhalter `%d' kann benutzt werden, um in der Nachricht die laufende Nummer des aktuellen Bandes auszugeben (Start bei 1)  
|-
|-
| | <tt>'''-n</tt> '''
| | <tt>'''-n</tt> '''
| | die User- und Gruppen-ID der archivierten Dateien wird beim Listing in numerischer Form ausgegeben  
| | die User- und Gruppen-ID der archivierten Dateien wird beim Listing in numerischer Form ausgegeben  
|-
|-
| | <tt>'''-no-preserve-owner</tt> '''
| | <tt>'''-no-preserve-owner</tt> '''
| | (Voreinstellung für User ohne root-Privilegien) beim Extrahieren von Dateien aus dem Archiv oder beim Kopieren wird die archivierte User- und Gruppen-ID nicht auf die extrahierten Dateien übertragen  
| | (Voreinstellung für User ohne root-Privilegien) beim Extrahieren von Dateien aus dem Archiv oder beim Kopieren wird die archivierte User- und Gruppen-ID nicht auf die extrahierten Dateien übertragen  
|-
|-
| | <tt>'''-o</tt> '''
| | <tt>'''-o</tt> '''
| | schaltet cpio in den copy-out Modus; die in der Liste angegebenen Dateien werden aus dem System heraus kopiert und ein Archiv angelegt oder erweitert  
| | schaltet cpio in den copy-out Modus; die in der Liste angegebenen Dateien werden aus dem System heraus kopiert und ein Archiv angelegt oder erweitert  
|-
|-
| | <tt>'''-O</tt><nowiki> [[</nowiki>''User''@ ]''Host'':]''Datei'' '''
| | <tt>'''-O</tt><nowiki> [[</nowiki>''User''@ ]''Host'':]''Datei'' '''
| | verbindet die Standardausgabe von <tt>cpio</tt> mit der ''Datei''<nowiki>; gegebenenfalls wird die Verbindung zum Rechner </nowiki>''Host'' hergestellt und die Archivierung mit den Rechten von ''User'' ausgefüチhrt  
| | verbindet die Standardausgabe von <tt>cpio</tt> mit der ''Datei''<nowiki>; gegebenenfalls wird die Verbindung zum Rechner </nowiki>''Host'' hergestellt und die Archivierung mit den Rechten von ''User'' ausgefüチhrt  
|-
|-
| | <tt>'''-p</tt> '''
| | <tt>'''-p</tt> '''
| | schaltet cpio in den copy-pass Modus  
| | schaltet cpio in den copy-pass Modus  
|-
|-
| | <tt>'''-r</tt> '''
| | <tt>'''-r</tt> '''
| | erlaubt dem Anwender die interaktive Umbenennung von Dateien im copy-in Modus  
| | erlaubt dem Anwender die interaktive Umbenennung von Dateien im copy-in Modus  
|-
|-
| | <tt>'''-R</tt> [''User'' ][:.][''Gruppe'' ] '''
| | <tt>'''-R</tt> [''User'' ][:.][''Gruppe'' ] '''
| | die entsprechenden Benutzerrechte vorausgesetzt, werden Eigentümer und/oder Gruppe der Dateien beim Extrahieren geändert  
| | die entsprechenden Benutzerrechte vorausgesetzt, werden Eigentümer und/oder Gruppe der Dateien beim Extrahieren geändert  
|-
|-
| | <tt>'''-s</tt> '''
| | <tt>'''-s</tt> '''
| | die Bytes eines Halbwortes werden beim Extrahieren der Daten vertauscht  
| | die Bytes eines Halbwortes werden beim Extrahieren der Daten vertauscht  
|-
|-
| | <tt>'''-S</tt> '''
| | <tt>'''-S</tt> '''
| | die Halbworte eines Wortes werden beim Extrahieren der Daten vertauscht  
| | die Halbworte eines Wortes werden beim Extrahieren der Daten vertauscht  
|-
|-
| | <tt>'''-t</tt> '''
| | <tt>'''-t</tt> '''
| | zeigt den Inhalt des Archives an  
| | zeigt den Inhalt des Archives an  
|-
|-
| | <tt>'''-u</tt> '''
| | <tt>'''-u</tt> '''
| | beim Extrahieren werden Dateien im Dateisystem ohne Nachfrage durch gleichnamige Dateien aus dem Archiv überschrieben, auch wenn diese älter sind  
| | beim Extrahieren werden Dateien im Dateisystem ohne Nachfrage durch gleichnamige Dateien aus dem Archiv überschrieben, auch wenn diese älter sind  
|-
|-
| | <tt>'''-v</tt> '''
| | <tt>'''-v</tt> '''
| | zusammen mit -t wird ein ausführliches Listing des Archivinhalts ausgegeben  
| | zusammen mit -t wird ein ausführliches Listing des Archivinhalts ausgegeben  
|-
|-
| | <tt>'''-V</tt> '''
| | <tt>'''-V</tt> '''
| | für jede bearbeitete Datei wird ein Punkt in den Standardfehlerkanal geschrieben  
| | für jede bearbeitete Datei wird ein Punkt in den Standardfehlerkanal geschrieben  
|-
|-
| | <tt>'''-0</tt> '''
| | <tt>'''-0</tt> '''
| | die Elemente der Liste können durch Nullbytes anstelle der normalerweise erwarteten NEWLINE übergeben werden  
| | die Elemente der Liste können durch Nullbytes anstelle der normalerweise erwarteten NEWLINE übergeben werden  
|-
|-
|}
|}
Zeile 147: Zeile 147:
* pass througth als Kombination aus den obigen Modi erlaubt das Kopieren ganzer Verzeichnisbäume: Option -p  
* pass througth als Kombination aus den obigen Modi erlaubt das Kopieren ganzer Verzeichnisbäume: Option -p  


==== Volles und inkrementelles Backup ====
==== Volles und inkrementelles Backup ====
Um Dateien in einem cpio-Archiv zu speichern, müssen deren Namen dem Kommando mitgeteilt werden. cpio erwartet allerdings, dass jeder Dateiname auf einer neuen Zeile erscheint. Deshalb füttert man das Kommando am einfachsten über eine Pipe:  
Um Dateien in einem cpio-Archiv zu speichern, müssen deren Namen dem Kommando mitgeteilt werden. cpio erwartet allerdings, dass jeder Dateiname auf einer neuen Zeile erscheint. Deshalb füttert man das Kommando am einfachsten über eine Pipe:  


Zeile 167: Zeile 167:
  112 blocks
  112 blocks


==== Überprüfung des Archives ====
==== Überprüfung des Archives ====
Um sich eine Liste der Dateien eines Archives zu betrachten, ruft man das Kommando im ''copy in''-Modus auf:  
Um sich eine Liste der Dateien eines Archives zu betrachten, ruft man das Kommando im ''copy in''-Modus auf:  


user@sonne> cpio -itvI /dev/fd0
user@sonne> cpio -itvI /dev/fd0
  -rw-r--r--  1 root    root          270 Aug 15 07:07 /etc/mtab
  -rw-r--r-- 1 root   root    270 Aug 15 07:07 /etc/mtab
  -rw-r--r--  1 root    root        2510 Aug 10 13:49 /etc/logfiles
  -rw-r--r-- 1 root   root    2510 Aug 10 13:49 /etc/logfiles
  -rw-r--r--   1 root     root       37911 Aug 15 07:06 /etc/ld.so.cache
  -rw-r--r-- 1 root   root   37911 Aug 15 07:06 /etc/ld.so.cache
  -rw-r--r--  1 root    root          271 Aug 10 15:27 /etc/hosts.allow
  -rw-r--r-- 1 root   root    271 Aug 10 15:27 /etc/hosts.allow
  -rw-r--r--  1 root    root        5762 Aug 10 15:27 /etc/inetd.conf
  -rw-r--r-- 1 root   root    5762 Aug 10 15:27 /etc/inetd.conf
  -rw-r--r--  1 root    root        3349 Aug 14 12:18 /etc/printcap
  -rw-r--r-- 1 root   root    3349 Aug 14 12:18 /etc/printcap
  -rw-------   1 root     root           60 Aug 15 07:06 /etc/ioctl.save
  -rw------- 1 root   root     60 Aug 15 07:06 /etc/ioctl.save
  -rw-r--r--  1 root    root        3799 Aug 15 09:10 /etc/XF86Config
  -rw-r--r-- 1 root   root    3799 Aug 15 09:10 /etc/XF86Config
  -rw-------  1 root    root          512 Aug 15 07:07 /etc/ssh_random_seed
  -rw------- 1 root   root    512 Aug 15 07:07 /etc/ssh_random_seed
  -rw-r--r--  1 root    root        3309 Aug 14 12:18 /etc/printcap.old
  -rw-r--r-- 1 root   root    3309 Aug 14 12:18 /etc/printcap.old
  -rw-rw----   1 lp       lp           1244 Aug 14 12:05 /etc/apsfilterrc.ljet4
  -rw-rw---- 1 lp   lp     1244 Aug 14 12:05 /etc/apsfilterrc.ljet4
  -rw-rw----   1 lp       lp           1261 Aug 14 12:37 /etc/apsfilterrc.lj4dith
  -rw-rw---- 1 lp   lp     1261 Aug 14 12:37 /etc/apsfilterrc.lj4dith
  -rw-r--r--   1 root     root           88 Aug 15 09:38 /etc/dumpdates
  -rw-r--r-- 1 root   root     88 Aug 15 09:38 /etc/dumpdates
  drwxr-xr-x 30 root     root           0 Aug 15 08:28 /etc
  drwxr-xr-x 30 root   root     0 Aug 15 08:28 /etc
  112 blocks
  112 blocks


Zeile 191: Zeile 191:
Ein Vergleich der Dateien im Archiv mit den Dateien im Verzeichnisbaum ist nicht direkt möglich. Hier kann nur ein Entpacken der Daten in ein separates Verzeichnis mit anschließendem Dateivergleich (zum Beispiel mit diff) helfen.  
Ein Vergleich der Dateien im Archiv mit den Dateien im Verzeichnisbaum ist nicht direkt möglich. Hier kann nur ein Entpacken der Daten in ein separates Verzeichnis mit anschließendem Dateivergleich (zum Beispiel mit diff) helfen.  


==== Recovery ====
==== Recovery ====
Schließlich möchte man die Daten auch wieder zurückschreiben können. Hierzu ist cpio im ''copy-in''-Modus wie folgt zu starten:  
Schließlich möchte man die Daten auch wieder zurückschreiben können. Hierzu ist cpio im ''copy-in''-Modus wie folgt zu starten:  



Aktuelle Version vom 14. Juni 2026, 00:47 Uhr

Backup mit cpio

cpio erzeugt und verwaltet Dateiarchive verschiedener Formate

cpio {-o|-create} [-0acvABLV] [-C Anzahl] [-H Format] [-M Nachricht] [-O [[User@]Host:]Datei] [-F [[User@]Host:]Datei] [-file=[[User@]Host:]Datei] [-format=Format] [-message=Nachricht] [-null] [-reset-access-time] [-verbose] [-dot] [-append] [-block-size=Größe] [-dereference] [-io-size=Größe] [-force-local] [-help] [-version] < Liste [> Datei] cpio {-i|-extract} [-bcdfmnrtsuvBSV] [-C Anzahl] [-E Datei] [-H Format] [-M Nachricht] [-R [User][:.][Gruppe]] [-I [[User@]Host:]Datei] [-F [[User@]Host:]Datei] [-file=[[User@]Host:]Datei] [-make-directories] [-nonmatching] [-preserve-modification-time] [-numeric-uid-gid] [-rename] [-list] [-swap-bytes] [-swap] [-dot] [-unconditional] [-verbose] [-block-size=Anzahl] [-swap-halfwords] [-io-size=Anzahl] [-pattern-file=Datei] [-format=Format] [-owner=[user][:.][Gruppe]] [-no-preserve-owner] [-message=Nachricht] [-force-local] [-help] [-version] [Muster...] [< Datei] cpio {-p|-pass-through} [-0adlmuvLV] [-R [user][:.][group]] [-null] [-reset-access-time] [-make-directories] [-link] [-preserve-modification-time] [-unconditional] [-verbose] [-dereference] [-owner=[User][:.][Gruppe]] [-dot] [-no-preserve-owner] [-help] [-version] Zielverzeichnis < Liste

cpio ist ein Tool zur Erzeugung und Verwaltung von Dateiarchiven. In einem Dateiarchiv werden mehrere Dateien mit ihren Verzeichnissen und allen Verwaltungsinformationen, wie Eigentümer, Zugriffsrechte Erzeugungszeit und weitere, zu einer einzigen Datei oder zu einem Datenstrom zusammengefaßt. cpio erzeugt und verarbeitet eine ganze Reihe verschiedener Archivformate. Deshalb ist es besonders gut für den Austausch von Datenbeständen zwischen unterschiedlichen Rechnern geeignet.

cpio kann in drei verschiedenen Modi arbeiten.

Im copy-out Modus werden Daten aus dem Dateisystem in ein Archiv, zum Beispiel auf ein Magnetband, geschrieben. Die Namen der zu archivierenden Dateien liest cpio Zeilenweise von der Standardeingabe. Eine gängige Methode zur Erzeugung einer geeigneten Liste von Dateinamen ist die Verbindung des Ausgabekanals von [../../../ebooks/computer/betriebssysteme/linux/allgemein/unsortiert/linux_anwender_handbuch/linux_anwenderhandbuch_7-0/node54.html#find find] mit dem Eingabekanal von cpio durch eine Pipeline.

Im copy-in Modus werden die Daten vom Archiv in das Dateisystem kopiert. In diesem Modus liest cpio die archivierten Daten von der Standardeingabe. Wenn nicht das gesamte Archiv ausgepackt werden soll, können die gewünschen Dateien durch reguläre Ausdrücke nach den Optionen auf der Kommandozeile angegeben werden.

Im copy-pass Modus werden die Daten wie bei copy-out aus dem Dateisystem gelesen und sofort wieder in ein anderes Verzeichnis geschrieben, ohne daß zwischendurch ein Archiv erzeugt wird. Die Namen der zu kopierenden Dateien werden wie bei copy-out von der Standardeingabe gelesen, der Name des Zielverzeichnisses muß in der Kommandozeile nach den Optionen angegeben werden.

Optionen

-a veranlaßt cpio, nach dem copy-out die letzte Zugriffszeit vor dem Lesen zurückzusetzen
-A die Dateien werden an ein existierendes Archiv angehängt (nur im copy-out Modus auf Blockgeräten möglich)
-b veranlaßt cpio, beim extrahieren von Daten die Bytes von Datenwörtern und Halbwörtern zu tauschen
-B setzt die Blockgröße auf 5120 Bytes anstelle der voreingestellten 512 Bytes
-block-size=Anzahl setzt die Blockgröße auf Anzahlx512 Bytes
-c veranlaßt tar, das alte, portable ASCII Archivformat zu benutzen
-C Größe setzt die Blockgröße (Größe in Bytes)
-d veranlaßt tar, beim Auspacken eines Archivs die notwendigen Verzeichnisse zu erzeugen, wenn sie noch nicht existieren
-E Datei die Liste oder die regulären Ausdrücke zur Bestimmung der zu kopierenden Dateien wird aus der angegebenen Datei und nicht von der Standardeingabe gelesen
-f verkehrt die Wirkung der Listeoder des Musters ins Gegenteil; es werden die Dateien kopiert, die nicht auf das Muster passen
-F [[User@ ]Host:]Datei veranlaßt tar, die angegebene Datei als Archivdatei zu benutzen
-force-local erzwingt die Interpretation eines Archivnamens bei den Optionen -F, -I und -O als lokale Datei, auch wenn in dem Dateinamen ein Doppelpunkt vorkommt
-H Format bestimmt eines der folgenden Archivformate (bei copy-in werden die unterstützten Formate automatisch erkannt):

bin (Voreinstellung bei copy-out) veraltetes Binärformat

odc das alte, portable POSIX-1 Format

newc das neue, portable SVR4 Format; für große Dateisysteme mit mehr als 65536 I-Nodes geeignet

crc wie newc mit zusätzlicher Prüfsumme

tar das alte tar Format

ustar das POSIX-1 tar Format und das GNU-tar Format

hpbin das alte Binärformat des HPUX-cpio

hpodc das portable POSIX-1 Format von HPUX; unterscheidet sich in der Speicherung von Gerätedateien

-i schaltet cpio in den copy-in Modus; die in der Liste angegebenen Dateien werden aus dem Archiv in das System hinein kopiert
-I [[User@ ]Host:]Datei verbindet die Standardeingabe von cpio mit der Datei; gegebenenfalls wird die Verbindung zum Rechner Host hergestellt und die Archivierung mit den Rechten von User ausgeführt
-k ohne Funktion
-l wenn möglich werden Dateien nicht kopiert sondern symbolische Links erzeugt
-L im copy-out oder -pass Modus werden nicht die symbolischen Links kopiert, sondern die referenzierten Dateien
-m das Datum der letzten Änderung bleibt beim Kopieren unverändert
-M Nachricht veranlaßt cpio, die Nachricht auf die Standardfehlerausgabe zu schreiben, wenn das Backup-Medium voll ist; der Platzhalter `%d' kann benutzt werden, um in der Nachricht die laufende Nummer des aktuellen Bandes auszugeben (Start bei 1)
-n die User- und Gruppen-ID der archivierten Dateien wird beim Listing in numerischer Form ausgegeben
-no-preserve-owner (Voreinstellung für User ohne root-Privilegien) beim Extrahieren von Dateien aus dem Archiv oder beim Kopieren wird die archivierte User- und Gruppen-ID nicht auf die extrahierten Dateien übertragen
-o schaltet cpio in den copy-out Modus; die in der Liste angegebenen Dateien werden aus dem System heraus kopiert und ein Archiv angelegt oder erweitert
-O [[User@ ]Host:]Datei verbindet die Standardausgabe von cpio mit der Datei; gegebenenfalls wird die Verbindung zum Rechner Host hergestellt und die Archivierung mit den Rechten von User ausgefüチhrt
-p schaltet cpio in den copy-pass Modus
-r erlaubt dem Anwender die interaktive Umbenennung von Dateien im copy-in Modus
-R [User ][:.][Gruppe ] die entsprechenden Benutzerrechte vorausgesetzt, werden Eigentümer und/oder Gruppe der Dateien beim Extrahieren geändert
-s die Bytes eines Halbwortes werden beim Extrahieren der Daten vertauscht
-S die Halbworte eines Wortes werden beim Extrahieren der Daten vertauscht
-t zeigt den Inhalt des Archives an
-u beim Extrahieren werden Dateien im Dateisystem ohne Nachfrage durch gleichnamige Dateien aus dem Archiv überschrieben, auch wenn diese älter sind
-v zusammen mit -t wird ein ausführliches Listing des Archivinhalts ausgegeben
-V für jede bearbeitete Datei wird ein Punkt in den Standardfehlerkanal geschrieben
-0 die Elemente der Liste können durch Nullbytes anstelle der normalerweise erwarteten NEWLINE übergeben werden

cpio (cpio in/out) besitzt einen ähnlichen Funktionsumfang wie das zuvor beschriebene Kommando tar, so dass wohl eher die Vorliebe des Benutzers das eine oder andere Werkzeug favorisiert. Ein Vorteil wäre dennoch zu nennen: cpio verzweifelt nicht an beschädigten Archiven und vermag zumindest den unversehrten Teil komplett wieder herzustellen.

cpio MODUS [ OPTIONEN ]

cpio kennt drei Betriebsarten: * copy in zum Extrahieren von Dateien aus einem Archiv: Option -i

  • copy out zum Erzeugen eines Archivs: Option -o
  • pass througth als Kombination aus den obigen Modi erlaubt das Kopieren ganzer Verzeichnisbäume: Option -p

Volles und inkrementelles Backup

Um Dateien in einem cpio-Archiv zu speichern, müssen deren Namen dem Kommando mitgeteilt werden. cpio erwartet allerdings, dass jeder Dateiname auf einer neuen Zeile erscheint. Deshalb füttert man das Kommando am einfachsten über eine Pipe:

user@sonne> ls *.txt | cpio -o > /dev/fd0

11 blocks

Das Beispiel sichert alle auf ".txt" endenden Dateien des aktuellen Verzeichnisses auf die Diskette. Die Ausgabeumleitung ist wichtig, da sonst die Dateiinhalte auf dem Bildschirm landen würden.

Hiermit kennen Sie nun das Prinzip des Backups mit cpio ; zur Implementierung eines inkrementellen Backups bietet sich die Nutzung der Möglichkeiten des Kommandos [../../../../index.php/Linuxfibel_-_Nutzerkommandos_-_Datei_%26_Verzeichnis#find_-_Dateien_suchen find ]an, mit dem nach den verschiedensten Kriterien nach Dateien gefahndet werden kann. So archiviert der Aufruf von:

user@sonne> find /etc -maxdepth 2 -depth | cpio -o > /dev/fd0

319 blocks

alle Dateien aus dem Verzeichnis /etc, wobei alle Unterverzeichnisse, nicht aber die darin befindlichen Unterverzeichnisse berücksichtigt werden. Die Option -depth von find bewirkt, dass der Name eines Verzeichnisses selbst erst nach den enthaltenden Daten ausgegeben wird. Bei eventuellem Zurückschreiben der Daten, wird nun der häufige Fehler verhindert, dass ein Verzeichnis mit falschen Zugriffsrechten erzeugt wurde und anschließend das Übertragen der Daten in dieses scheitert. Durch die hier gewählte Reihenfolge wird mit der ersten Datei aus dem Verzeichnis dieses mit den korrekten Rechten gesetzt (mit Rechten, die das Schreiben der Datei ermöglichen).

Im Sinne eines inkrementellen Backups ist aber sicher die Suche nach Dateien, die innerhalb einer bestimmten Zeitspanne geändert wurden, interessant. Der nächste Aufruf findet alle Dateien des Verzeichnisses /etc, deren Modifikationszeit nicht älter als 5 Tage ist:

# find /etc -mtime -5 -maxdepth 2 -depth | cpio -o > /dev/fd0

112 blocks

Überprüfung des Archives

Um sich eine Liste der Dateien eines Archives zu betrachten, ruft man das Kommando im copy in-Modus auf:

user@sonne> cpio -itvI /dev/fd0

-rw-r--r--  1 root   root     270 Aug 15 07:07 /etc/mtab
-rw-r--r--  1 root   root     2510 Aug 10 13:49 /etc/logfiles
-rw-r--r--  1 root   root    37911 Aug 15 07:06 /etc/ld.so.cache
-rw-r--r--  1 root   root     271 Aug 10 15:27 /etc/hosts.allow
-rw-r--r--  1 root   root     5762 Aug 10 15:27 /etc/inetd.conf
-rw-r--r--  1 root   root     3349 Aug 14 12:18 /etc/printcap
-rw-------  1 root   root      60 Aug 15 07:06 /etc/ioctl.save
-rw-r--r--  1 root   root     3799 Aug 15 09:10 /etc/XF86Config
-rw-------  1 root   root     512 Aug 15 07:07 /etc/ssh_random_seed
-rw-r--r--  1 root   root     3309 Aug 14 12:18 /etc/printcap.old
-rw-rw----  1 lp    lp      1244 Aug 14 12:05 /etc/apsfilterrc.ljet4
-rw-rw----  1 lp    lp      1261 Aug 14 12:37 /etc/apsfilterrc.lj4dith
-rw-r--r--  1 root   root      88 Aug 15 09:38 /etc/dumpdates
drwxr-xr-x 30 root   root      0 Aug 15 08:28 /etc
112 blocks

Die Option -t bewirkt die Anzeige des Archivinhalts und verhindert das Entpacken. -v bringt die Rechte der Dateien zum Vorschein und -I Archiv lässt cpio die Daten aus dem Archiv anstatt von der Standardeingabe lesen.

Ein Vergleich der Dateien im Archiv mit den Dateien im Verzeichnisbaum ist nicht direkt möglich. Hier kann nur ein Entpacken der Daten in ein separates Verzeichnis mit anschließendem Dateivergleich (zum Beispiel mit diff) helfen.

Recovery

Schließlich möchte man die Daten auch wieder zurückschreiben können. Hierzu ist cpio im copy-in-Modus wie folgt zu starten:

# cpio -id /etc/mtab < /dev/fd0

cpio: /etc/mtab not created: newer or same age version exists
112 blocks

Im Beispiel stellt cpio nur fest, dass die gewünschte Datei nicht älter ist als die im Archiv enthaltene Version. Also tut das Kommando nichts. -d erzwingt das Anlegen von Verzeichnissen, falls diese nicht schon existieren, die nachfolgende Angabe von zu rekonstruierenden Dateien kann entfallen, dann werden alle Dateien aus dem Archiv extrahiert.