Notice: Unexpected clearActionName after getActionName already called in /var/www/html/includes/context/RequestContext.php on line 338
cpio – Wikipedia Zum Inhalt springen

cpio

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Copy in, copy out)

cpio ist ein Archivierungsprogramm und Dateiformat aus dem Unix-Umfeld, das in seiner grundlegenden Funktionsweise (nicht jedoch bei der Kommandozeilenschnittstelle) dem Kommando tar ähnelt. Die Abkürzung cpio steht für „copy in, copy out“. Mit cpio können Dateien sequentiell in eine Archivdatei oder auf Magnetband geschrieben werden. cpio-Dateien werden oft mit der Dateiendung .cpio versehen. Ebenso wie tar-Dateien sind cpio-Archive größer als die Summe der im Archiv enthaltenen Einzeldateien, so dass unter Umständen eine Datenkomprimierung sinnvoll ist. Zur Komprimierung wird unter Unix in der Regel compress, gzip oder bzip2 verwendet.

Die SVR4-Version des cpio-Kommandos kann neben verschiedenen cpio-Formaten, auch tar-Archivformate verwenden. GNU-cpio hat dieses Verhalten kopiert. Ein Programm, das ein dem cpio-Dateiformat ähnliches Format verwendet, ist afio. Von afio erzeugte Archive können aber wegen der Unterschiede im Archivformat, die meist auch erst in der Mitte dieser Archive aufzufinden sind, nicht immer von cpio gelesen werden.

POSIX-Standard

cpio ist im POSIX.1-1988-Standard enthalten. Aus späteren Versionen, ab POSIX.1-2001, wurde er aufgrund seiner maximalen Dateigröße von 4 GB / 2 GB (beim nicht standardisierten SVR4-Format) bzw. 8 GB (beim POSIX-cpio-Format) entfernt. Diese Entscheidung wurde auch davon beeinflusst, dass das cpio-Archiv-Format nicht erweiterbar ist ohne ein komplett neues Format aus der cpio-Familie zu erzeugen. Das neue POSIX-Kommando pax unterstützt jedoch sowohl das tar- als auch das cpio-Format. Der Name pax (lateinisch für „Frieden“) wurde als Ergebnis der sogenannten Tar-Wars (die um das Jahr 1992 geführt wurden<ref>https://www.opengroup.org/onlinepubs/9699919799/utilities/pax.html</ref>) gewählt, um Frieden zwischen den beiden rivalisierenden Programmen cpio und tar zu schaffen.

Funktionsweise und Beispielaufrufe

cpio verfügt über vier Grundfunktionen, welche über die Optionen -o („Copy-Out-Modus“, Erzeugen eines Archivs), -i („Copy-In-Modus“, Extrahieren aus einem Archiv), -p („Copy-Pass-Modus“, Kopieren von Verzeichnisbäumen) und -t („List-Modus“) angegeben werden. cpio arbeitet grundsätzlich wie andere Unix-Filter, d. h., es erwartet seine Argumente aus dem Eingabe-Datenstrom und schickt seine Ergebnisse an den Ausgabe-Datenstrom.

Erzeugen einer cpio-Datei, welche die Dateien des aktuellen Verzeichnisses enthält:

ls | cpio -o > verzeichnis.cpio

Erzeugen einer cpio-Datei, welche die Dateien und Unterverzeichnisse des aktuellen Verzeichnisses enthält:

find . -depth -print | cpio -o > verzeichnis.cpio

Wiederherstellen von Dateien aus einem cpio-Archiv:

cpio -i < archiv.cpio

Auflisten der im Archiv enthaltenen Dateien, ohne diese zu extrahieren:

cpio -it < archiv.cpio

Kopieren des aktuellen Verzeichnisses einschließlich aller Unterverzeichnisse nach /tmp/verzeichnis (entspricht in etwa cp -r * /tmp/verzeichnis):

find . -print -depth | cpio -pd /tmp/verzeichnis

Vergleich zwischen cpio und tar

Vorlage:Hinweisbaustein Von den beiden Unix-Kommandos cpio und tar ist tar bekannter und weiter verbreitet und unterliegt nicht der Größenbeschränkung für Archivdateien von 4 GB (2 GB bei Implementierungen mit signed int für die Dateigröße) für das SVr4-Format bzw. 8 GB für das POSIX-Format. Von den Verfechtern von cpio wird angeführt, es gebe beim cpio-Format in der Regel keine Kompatibilitätsprobleme zwischen verschiedenen Unix-Plattformen. Bei näherer Betrachtung ergibt sich das jedoch als Fehlannahme, denn es gibt vier zueinander völlig inkompatible cpio-Formate und zusätzlich Probleme mit der Byte-Reihenfolge. Einen weiteren Vergleich findet man im GNU-tar-Handbuch.<ref>http://www.gnu.org/software/tar/manual/html_section/cpio.html#SEC144</ref> Dort findet man auch einiges zu den Formaten,<ref>http://www.gnu.org/software/tar/manual/html_section/Formats.html</ref> die teilweise von GNU-cpio unterstützt werden,<ref>http://www.gnu.org/software/cpio/manual/cpio.html</ref> diese Angaben sind aber teilweise nur auf die GNU-Implementierung anzuwenden, die nicht vollständig kompatibel zum UNIX-cpio ist.

Die originale cpio-Implementierung verfügt über eine nichtdokumentierte Eigenschaft und verhält sich ähnlich wie das install-Programm. Dadurch lassen sich mit cpio Dateien über gerade benutzte Programmdateien und Bibliotheken extrahieren, ohne dass es dadurch zu Programmabstürzen kommt.

Da die cpio-Formate so definiert wurden, dass jede Erweiterung zu einem völlig neuen, inkompatiblen Archivformat führt, wurde das POSIX-cpio-Format im Jahr 2001 mit POSIX.1-2001 als nicht zukunftsorientiert bezeichnet. Das aktuelle bevorzugte POSIX-Archiv-Format heißt pax und ist eine beliebig erweiterbare Variante des tar-Formats.

Verwendung

Heutzutage findet cpio hauptsächlich Verwendung bei einem initramfs, dem Nachfolger von initrd. Auch rpm-Pakete verwenden intern das cpio-Format.

Siehe auch

Einzelnachweise

<references />

Weblinks

  • GNU-cpio-Webseite (englisch)
  • <templatestyles src="Webarchiv/styles.css" />{{#if:20070930083314
      | {{#ifeq: 20070930083314 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: CPIO - das ultimative Backup/Restore Tool | {{#invoke:WLink|getEscapedTitle|CPIO - das ultimative Backup/Restore Tool}} | {{#invoke:Webarchiv|getdomain|http://www.int-x.org/doku.php?id=tipps:cpio}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20070930083314}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: CPIO - das ultimative Backup/Restore Tool | {{#invoke:WLink|getEscapedTitle|CPIO - das ultimative Backup/Restore Tool}} | {{#invoke:Webarchiv|getdomain|http://www.int-x.org/doku.php?id=tipps:cpio}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20070930083314}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: CPIO - das ultimative Backup/Restore Tool | {{#invoke:WLink|getEscapedTitle|CPIO - das ultimative Backup/Restore Tool}} | {{#invoke:Webarchiv|getdomain|http://www.int-x.org/doku.php?id=tipps:cpio}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: CPIO - das ultimative Backup/Restore Tool | {{#invoke:WLink|getEscapedTitle|CPIO - das ultimative Backup/Restore Tool}} | {{#invoke:Webarchiv|getdomain|http://www.int-x.org/doku.php?id=tipps:cpio}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: CPIO - das ultimative Backup/Restore Tool | {{#invoke:WLink|getEscapedTitle|CPIO - das ultimative Backup/Restore Tool}} | {{#invoke:Webarchiv|getdomain|http://www.int-x.org/doku.php?id=tipps:cpio}} }} (Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: CPIO - das ultimative Backup/Restore Tool | {{#invoke:WLink|getEscapedTitle|CPIO - das ultimative Backup/Restore Tool}} | {{#invoke:Webarchiv|getdomain|http://www.int-x.org/doku.php?id=tipps:cpio}} }}  
                 }}}}}}}}{{#if:
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20070930083314|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.int-x.org/doku.php?id=tipps:cpio}}
    || {{#if:  || }}
  }}{{#if: CPIO - das ultimative Backup/Restore Tool
    | {{#if: {{#invoke:WLink|isBracketedLink|CPIO - das ultimative Backup/Restore Tool}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://www.int-x.org/doku.php?id=tipps:cpio%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.int-x.org/doku.php?id=tipps:cpio%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://www.int-x.org/doku.php?id=tipps:cpio }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }} (deutsch)