Getty Images
So nutzen Sie Linux cpio fürs Backup und Restore von Files
Es gibt viele Möglichkeiten, Dateien auf Linux-Geräten zu sichern. Das Dienstprogramm cpio kopiert Inhalte aus dem Dateisystem in ein Archiv, um zuverlässige Backups zu erstellen.
Das Dienstprogramm cpio ist ein archivbasiertes Tool, ähnlich wie tar. Es kopiert Dateien in ein Archiv, um sie zu sichern, und extrahiert sie aus einem Archiv, um sie wiederherzustellen. Betrachtet man den Linux-Kopierbefehl cp, so beschreibt der Name des Tools seine Funktion: copy-in, copy-out.
Der allgemeine Ansatz von cpio besteht darin, Dateien in ein Archiv zu kopieren oder Dateien aus dem Archiv zu extrahieren. Dies sind die Backup- und Restore-Funktionen, obwohl es viele zusätzliche Optionen gibt, um die Arbeitsweise von cpio zu ändern.
Cpio ist flexibel und schnell. Sie können es leicht skripten, um Backup-Aufträge zu automatisieren oder Dateien für einfache Übertragungen zu bündeln.
In diesem Artikel wird die Verwendung von cpio anhand eines Szenarios erläutert, so dass Sie die Schritte auf Ihrem eigenen Linux-System nachvollziehen können.
Erstellen Sie die Szenario-Dateien
Stellen Sie zunächst sicher, dass cpio auf Ihrem Linux-System installiert ist. Es wird nicht in allen Distributionen vorhanden sein.
Öffnen Sie eine Terminal-Konsole und geben Sie den folgenden Befehl ein.
$ which cpio
Sie sollten eine Ausgabe sehen, die anzeigt, dass cpio auf dem System vorhanden ist. Auf den meisten Systemen lautet die Ausgabe /usr/bin/cpio.
Falls erforderlich, installieren Sie cpio mit dem Paketmanager Ihrer Distribution.
Unter Red Hat und ähnlichen Distributionen geben Sie den folgenden Befehl ein.
$ sudo dnf install cpio
Unter Debian und ähnlichen Distributionen geben Sie diesen Befehl ein.
<code$ sudo apt install cpio
Führen Sie als Nächstes die folgenden Befehle aus, um einige Ressourcen zu erstellen, mit denen Sie im Sicherungs-/Wiederherstellungsszenario arbeiten können.
$ cd ~
$ mkdir projects
$ cd projects/
$ touch file1.txt file2.txt file3.txt
$ echo "File 1 Contents" > file1.txt
Cpio verlässt sich stärker auf Redirectors als andere Linux-Befehle. Hier ist ein kurzer Überblick über die drei Redirectors, die Sie häufig mit cpio verwenden werden.
Redirector | Beschreibung |
> | Leitet die Ausgabe an einen Ort um. |
< | Eingabe von einem Ort abrufen. |
| | Verwenden Sie die Ausgabe des ersten Befehls als Eingabe für den zweiten Befehl. |
Verwendung des Befehls find
Der Befehl find ist das wichtigste Werkzeug, um Dateien zur Archivierung in cpio zu leiten. Der Befehl ermöglicht die Suche auf der Grundlage von Besitzverhältnissen, Berechtigungen, Größe und einer Vielzahl anderer Parameter. Sie werden wahrscheinlich mit einer einfachen Suche beginnen, bei der alle Dateien in einem Verzeichnis angegeben werden.
Die Syntax für find lautet wie folgt.
$ find /where/to/search parameters
Um zum Beispiel Dateien im Verzeichnis /home/student/projects zu suchen, geben Sie Folgendes ein.
$ find /home/student/projects
Beachten Sie, dass find eine Liste der Ergebnisse anzeigt. Diese Ausgabe wird zur Eingabe für cpio.
Eine andere Variante ist die Suche nach .txt-Dateien im Verzeichnis projects.
$ find /home/student/projects -iname "*.txt"
In diesem Beispiel ist /home/student/projects das Verzeichnis, in dem gesucht werden soll; -iname bedeutet eine Suche nach dem Namen, wobei die Groß- und Kleinschreibung ignoriert wird; und "*.txt" bedeutet, dass Dateien mit der Erweiterung .txt gesucht werden sollen.
Sichern Sie Ihre Dateien
Die beiden primären Optionen von cpio verwirren die Benutzer manchmal: -o und -i. Cpio arbeitet aus der Perspektive des Host-Dateisystems, das heißt Sie kopieren die Dateien aus dem Dateisystem, um ein Backup zu erstellen. Um fehlende Dateien wiederherzustellen, kopieren Sie sie wieder hinein.
Um cpio zu verwenden, erstellen Sie ein Archiv und kopieren Sie die Textdateien, die Sie zuvor erstellt haben, in dieses Archiv.
Hier sind die notwendigen cpio-Optionen, um ein Archiv zu erstellen:
Option | Beschreibung |
-o | Erzeugt das Dateiarchiv und kopiert Dateien hinein. Dies ist der Backup-Befehl. |
-v | Ausführlicher Modus, der die Namen der kopierten Dateien anzeigt. |
-p | Behält Berechtigungen und Ownership bei. |
-A | Fügt Dateien an ein bestehendes Archiv an. |
Vergewissern Sie sich, dass Sie sich im Verzeichnis /projects befinden, und geben Sie dann den folgenden Befehl ein, um ein Archiv namens backup.cpio zu erstellen.
$ find /home/student/projects | cpio -o > /home/student/backup.cpio
Dieser Befehl beginnt mit find, um das zu kopierende Verzeichnis anzugeben. Er erstellt dann das Archiv backup.cpio im Verzeichnis /home/student und kopiert die ausgewählten Dateien in dieses Archiv. Kopieren Sie das Archiv an einen sicheren Ort, zum Beispiel auf einen separaten Datenträger oder in ein Netzwerkverzeichnis. Wenn Ihr Archiv leer ist, vergewissern Sie sich, dass Sie die Dateien, die Sie kopieren möchten, richtig angegeben haben.
Verwenden Sie die Optionen des Befehls find oder kombinieren Sie den Befehl ls mit Platzhaltern (Wildcards), wenn Sie nur bestimmte Dateien zum Kopieren in das Archiv benötigen.
Dateien an ein Archiv anfügen
Das Kombinieren von Verzeichnisbäumen oder das Hinzufügen von Dateien zu einem bestehenden Archiv kann nützlich sein. Verwenden Sie die Option -A zusammen mit -o, um die Dateien anzuhängen.
In diesem Beispiel wird der Inhalt des Verzeichnisses /old_projects in das bestehende Archiv backup.cpio integriert.
$ find /home/student/old_projects | cpio -oA > /home/student/backup.cpio
Simulieren Sie Datenverlust, um ein Test-Restore durchzuführen
Sie haben nun Ihre Textdateien mit cpio gesichert. Führen Sie vorsichtig den folgenden Befehl im Verzeichnis /projectsaus.
$ rm -f *.txt
Stellen Sie sich nun vor, dass Sie Ihre Dateien versehentlich gelöscht haben. Verwenden Sie den Befehl ls, um festzustellen, dass die Dateien verschwunden sind.
Der cpio-Wiederherstellungsprozess kopiert die Dateien aus dem Archiv an den Zielspeicherort. Wie das Dienstprogramm tar ist das Extrahieren der Dateien eine Kopieraktion und zerstört das Archiv nicht.
Zeigen Sie zunächst den Inhalt des Archivs backup.cpio an. Listen Sie das Inhaltsverzeichnis des Archivs mit der Option -t auf, wie im Folgenden gezeigt.
$ cpio -tv < backup.cpio
Vergewissern Sie sich, dass Sie den Pfad zur .cpio-Datei angeben, wenn sie sich nicht in Ihrem aktuellen Verzeichnis befindet. Sie sollten sich den Inhalt des cpio-Archivs ansehen, um festzustellen, welche Dateien Sie wiederherstellen möchten.
Hier sind die cpio-Wiederherstellungsoptionen:
Option | Beschreibung |
-i | Kopiert die Dateien aus dem Archiv. Dies ist der Wiederherstellungsbefehl. |
-v | Ausführlicher Modus. Zeigt die Namen der kopierten Dateien an. |
-d | Erzeugt Verzeichnisse nach Bedarf. Wird verwendet, um einen Wiederherstellungsort anzugeben. |
Geben Sie anschließend den folgenden Befehl ein, um die Dateien aus dem Archiv wiederherzustellen.
$ cpio -iv < /home/student/
Sie können den Inhalt des Verzeichnisses mit dem Befehl ls auflisten. Sie sollten die wiederhergestellten Textdateien sehen. Wenn die Dateien nicht angezeigt werden oder sich nicht an der richtigen Stelle befinden, überprüfen Sie den verwendeten Pfad mit der Option -d. Geben Sie cat file1.txt ein, um den Inhalt der Datei anzuzeigen.
Das Archiv wird in Ihr aktuelles Verzeichnis extrahiert, wenn Sie kein Zielverzeichnis angeben. Verwenden Sie die Option -d, um ein Wiederherstellungsziel zu definieren. Beachten Sie, dass cpio keine bestehenden Dateien mit demselben Namen überschreibt. Hier ist ein Beispiel.
$ cpio -ivd /home/student/restoreditems < /home/student/
Andere Linux cpio-Backup-Funktionen
Es gibt viele Anwendungsfälle für cpio, und es bietet hohe Flexibilität. Hier sind einige alternative Beispiele für die Praxistauglichkeit von cpio.
tar-Archive nutzen
Cpio kann tar-Archive erstellen und extrahieren. Das kann praktisch sein, wenn Sie sich mit cpio wohler fühlen, aber tar-Dateien empfangen oder herunterladen.
Um ein tar-Archiv zu erstellen, geben Sie Folgendes ein.
$ ls | cpio -o -H tar > archive.tar
Extrahieren Sie ein tar-Archiv mit diesem Befehl.
$ cpio -i -F < archive.tar
Verzeichnisbäume kopieren
Eine interessante cpio-Variante ist das Kopieren von Verzeichnisbäumen. Dies wird als Pass-Through-Modus bezeichnet und kopiert Dateien aus einem Baum in einen anderen, ohne ein Archiv zu erstellen. Dies kann nützlich sein, wenn Sie Daten zwischen Laufwerken oder sogar zwischen Systemen duplizieren.
Dieses Beispiel kopiert den Inhalt von /home/student/projects nach /devteam/projects, ohne ein Archiv zu erstellen.
$ find /home/student/projects | cpio -pdv /devteam/projects
Symbolischen Links folgen
Standardmäßig folgt cpio keinen symbolischen Links, um die Originaldatei zu kopieren. Verwenden Sie die Option -L, um diese Dateien zu erfassen und sie dem Archiv hinzuzufügen. Hier ein Beispiel, das davon ausgeht, dass Sie wissen, dass Sie symbolische Links im Verzeichnis /old_projects haben.
$ find /home/student/old_projects | cpio -oL > /home/student/backup.cpio
Vergessen Sie nicht, wie nützlich die cpio-Handbuchseite für Optionen und Beispiele sein können und nutzen Sie diese. Um die Handbuchseite aufzurufen, geben Sie man cpio ein.
Über den Autor:
Damon Garn ist Inhaber von Cogspinner Coaction und bietet freiberufliche IT-Schreib- und Redaktionsdienste an. Er hat mehrere CompTIA-Studienleitfäden geschrieben, darunter die Leitfäden zu Linux+, Cloud Essentials+ und Server+, und leistet umfangreiche Beiträge für die TechTarget-Redaktion und CompTIA-Blogs.