Der Befehl cp

cp-featured

In diesem Beitrag lernen Sie den Befehl cp kennen, welcher unter Linux- / UNIX-Betriebssystemen verwendet wird, um Dateien oder ganze Verzeichnisse zu kopieren. Bei dem Kopieren von Verzeichnissen ist auch sogenanntes rekursives Kopieren möglich - dabei werden auch enthaltene Unterverzeichnisse mit kopiert.

Da der Befehl cp im Paket coreutils enthalten ist, ist er auf jedem System bereits vorinstalliert und kann direkt verwendet werden.

Allgemeine Syntax

Die allgemeine Syntax des Befehls cp lautet folgendermaßen:

cp [Optionen] [Quelle(n)] [Ziel]

Bei Quelle und Ziel kann es sich jeweils um Verzeichnisse oder Dateien handeln. Die Angabe mehrerer Quellen ist möglich - es kann jedoch immer nur genau ein Ziel geben.

Wichtige Optionen

Die wichtigsten Optionen des Befehls cp werden im Folgenden behandelt.

-a - Zugriffsrechte und Zeitstempel erhalten

Durch Angabe der Option -a können Besitzer-, Gruppen- und Zugriffsrechte sowie auch die verschiedenen Zeitstempel (Erstellung, Modifikation und Zugriff) beibehalten werden.

cp -a [Quelle(n)] [Ziel]
Beispiel: Option -a

Dieses Beispiel zeigt das Kopieren unter Verwendung der Option -a.
Vorher:

In der folgenden Ausgabe von ls -l sind Benutzer, Gruppe, Zugriffsrechte sowie Zeitstempel der zu kopierenden Datei "hedv.txt" zu sehen.

befehl-cp-beispiel-2
Eingabe:

Die Datei wird nun in das ebenfalls im Arbeitsverzeichnis enthaltene Verzeichnis "profi-tutorials/" kopiert, wobei die gewünschte Option -a angegeben wird.

cp -a hedv.txt profi-tutorials/

Nach Ausführung:

Das Zielverzeichnis ist im folgenden ebenfalls in Form einer Ausgabe mit ls -l zu sehen: Die Metainformationen wurden alle übernommen.

befehl-cp-beispiel-3

--backup - Dateien vor dem Überschreiben sichern

Die Option --backup wird verwendet, um bereits vorhandene Zieldateien zu sichern, bevor diese überschrieben werden.

cp --backup=[simple|numbered|existing] [Quelle(n)] [Ziel]

Standardmäßig, auch wenn hinter der Option keine Parameter mit einem Gleichheitszeichen angegeben wurde, werden "simple" Backups durchgeführt (auch durch Parameter "simple" zu spezifizieren). Die Zieldatei wird dabei einfach unter Konkatenation des Suffix "~" kopiert. Das nächste Backup der jeweiligen Datei überschreibt bei dieser Option  stets das vorherige. Sollen mehrere Stände erhalten bleiben, so muss der Parameter "numbered" übergeben werden, um nummerierte Sicherheitskopien zu erstellen. Die Nummerierung wird durch Konkatenation an den Dateinamen angehängt, wobei vor und nach der Nummer ein "~" steht. Schließlich ist auch der Parameter "existing" möglich, welcher nur dann nummerierte Sicherheitskopien anlegt, wenn bereits welche existieren, andernfalls wird "simple" verwendet.

Beispiel: Option --backup

In diesem Beispiel wird eine Datei mehrfach in ein Zielverzeichnis kopiert. Durch Verwendung der Option --backup mit dem Parameter "numbered" sollen nummerierte Sicherheitskopien erstellt werden.
Eingabe:

Die im Arbeitsverzeichnis befindliche Datei "befehl-cat.txt" wird in das bisher leere Verzeichnis "bibo/" kopiert. Der Befehl wird zur Veranschaulichung insgesamt 5 Mal ausgeführt.

cp --backup=numbered befehl-cat.txt bibo/

Ausgabe (ls -l des Zielverzeichnisses):

Im Zielverzeichnis sind nun insgesamt 5 Dateien enthalten: Einerseits die zuletzt kopierte Version der Datei "befehl-cat.txt" und, andererseits, vier aufsteigend nummerierte Sicherheitskopien.

befehl-cp-beispiel-1

-i - Abfrage vor dem Überschreiben

Soll vor dem Überschreiben jeweils eine interaktive Abfrage erfolgen, so muss die Option -i angegeben werden:

cp -i [Quelle(n)] [Ziel]
Beispiel: Option -i

Hier wird die Option -i verwendet, um eine Abfrage vor dem Überschreiben einer Datei zu erhalten.
Eingabe:

Die Datei "befehl-cat.txt" soll in das Verzeichnis "bibo/" kopiert werden, existiert dort jedoch bereits.

cp -i befehl-cat.txt bibo/

Ausgabe:

In der Ausgabe ist nun die Abfrage zum Überschreiben der bereits vorhandenen Datei "bibo/befehl-cat.txt" zu sehen. Bestätigt wird mit "y" (yes), mit "n" (no) wird dagegen abgelehnt.

befehl-cp-beispiel-6

-l - Harten Link erstellen

Anstelle einer Kopie wird bei Angabe der Option -l ein harter Link im Ziel erstellt:

cp -l [Quelle(n)] [Ziel]
Beispiel: Option -l

Eingabe:

cp -lr profi-tutorials/ /

Bedeutung:

Der gezeigte Befehl erstellt einen harten Link zum Verzeichnis "profi-tutorials" im Wurzelverzeichnis "/". Die Option -r wurde spezifiziert, da es sich um eine Verzeichnisstruktur handelt.

-n - Niemals überschreiben

Wird die Option -n angegeben, so überschreibt cp niemals bereits vorhandene Dateien. Die Option -i wird hierbei wirkungslos.

cp -n [Quelle(n)] [Ziel]

-r - Rekursives Kopieren

Das bereits zu Beginn genannte rekursive Kopieren von Verzeichnissen ist mit der Option -r möglich:

cp -r [Quelle(n)] [Ziel]

Beliebig tief verschachtelte Verzeichnisse werden hierbei mitsamt enthaltener Dateien kopiert.

Beispiel: Option -r

In diesem Beispiel soll eine Verzeichnisstruktur rekursiv kopiert werden und die Metainformationen jeweils erhalten bleiben.
Eingabe:

Für das rekursive Kopieren wird die Option -r angegeben. Weiterhin wird auch die Option -a spezifiziert, um die Metainformationen der kopierten Dateien zu erhalten. Ziel des Kopiervorgangs ist das aktuelle Arbeitsverzeichnis.

cp -ar /home/hellberg/profi-tutorials/e-business/ ./

Ausgabe:

Im Folgenden ist die Ausgabe des Befehls tree zu sehen, welche die kopierte Verzeichnisstruktur zeigt - sie wurde mitsamt Unterverzeichnissen vollständig kopiert.

befehl-cp-beispiel-7

-s - Symbolischen Link erstellen

Bei Angabe der Option -s wird anstelle einer Kopie ein symbolischer Link erstellt:

cp -s [Quelle(n)] [Ziel]
Beispiel: Option -s

In diesem Beispiel wird die Option -s gezeigt.
Eingabe:

Es soll eine symbolische Verknüpfung zu einer Datei "befehl-top.txt" im aktuellen Arbeitsverzeichnis "./" erstellt werden.

cp -s profi-tutorials/linux/administration/befehl-top.txt ./

Ausgabe:

Im aktuellen Arbeitsverzeichnis ist nun die symbolische Verknüpfung vorhanden - hier mit ls -l angezeigt.

befehl-cp-beispiel-4

-u - Zieldatei nur aktualisieren

Durch Angabe der Option -u können Sie Dateien nur dann kopieren, wenn die Zieldatei älter ist als die Quelldatei oder wenn die Quelldatei noch nicht im Ziel existiert:

cp -u [Quelle(n)] [Ziel]

-v - Ausführliche Ausgabe

Unter Angabe der Option -v gibt cp eine ausführliche Erklärung der jeweils durchgeführten Aktionen aus:

cp -v [Quelle(n)] [Ziel]
Beispiel: Option -v

Dieses Beispiel zeigt die ausführliche Ausgabe mit der Option -v.
Eingabe:

Das Unterverzeichnis "profi-tutorials" im aktuellen Arbeitsverzeichnis wird rekursiv in das Wurzelverzeichnis "/" unter den Verzeichnisnamen "profi" kopiert. Die Option -v wird zusätzlich übergeben.

cp -rv profi-tutorials /profi

Ausgabe:

Die Ausgabe zeigt ausführlich jeden einzelnen Schritt des Kopiervorgangs. Im folgenden Bild sind beispielhaft die ersten 5 Zeilen dieser Ausgabe zu sehen.

befehl-cp-beispiel-5

Abonniere JETZT unseren Newsletter!


Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!

Joel Benseler

Click Here to Leave a Comment Below

Leave a Comment: