Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

cp - Dateien kopieren

&pagelevel(4)&pagelevel

(copy files)


cp kopiert Dateien. Kopieren heißt: die Datei ist nachher physisch zweimal vorhanden.

cp hat vier Formate. Das Kommando kopiert

  • entweder eine Datei in eine Datei mit anderem Namen (Format 1)

  • oder eine oder mehrere Dateien in ein anderes Dateiverzeichnis, wobei die Kopien dieselben Dateinamen haben (Format 2).

  • jede Datei in der Dateihierarchie aus datei in einen im Folgenden angegebenen Zielpfad (Formate 3 und 4)

Syntax


Format 1: cp[ -fip] datei dateikopie
Format 2: cp[ -fip] datei ... dateiverzeichnis
Format 3: cp -R[ -fip] datei ... dateiverzeichnis
Format 4: cp -r[ -fip] datei ... dateiverzeichnis



Format 1: cp[ -fip] datei dateikopie


Eine Datei kopieren


-f

Kann kein Dateideskriptor für dateikopie erhalten werden (Schritt 3.a.ii.), wird versucht, unlink() für dateikopie aufzurufen. Die Bearbeitung wird fortgesetzt.

-i

(i - interaktiv)

Wenn dateikopie bereits existiert, erwartet cp eine Bestätigung, dass diese Datei überschrieben werden darf. Bestätigen Sie, wird kopiert. Jede andere Eingabe verhindert ein Überschreiben.
Handelt es sich bei der Standard-Eingabe nicht um ein Terminal, wird diese Option ignoriert und nicht kopiert.

-p

Die folgenden Eigenschaften jeder datei werden in der entsprechenden dateikopie dupliziert:

  1. Der Zeitpunkt der letzten Datenmodifikation sowie der Zeitpunkt des letzten Zugriffs. Schlägt dieser Vorgang aus irgendeinem Grund fehl, so schreibt cp eine Meldung auf die Standard-Fehlerausgabe.

  2. Die Benutzernummer und die Gruppennummer. Schlägt dieser Vorgang aus irgendeinem Grund fehl, so ist nicht vorhersehbar, ob cp eine Meldung auf die Standard-Fehlerausgabe schreibt.

  3. Die Bits für die Zugriffsrechte sowie die Bits S_ISUID und S_ISGID. Schlägt dieser Vorgang aus irgendeinem Grund fehl, so schreibt cp eine Meldung auf die Standard-Fehlerausgabe.

Können Benutzernummer oder Gruppennummer nicht dupliziert werden, so werden die Bits für die S_ISUID und S_ISGID gelöscht.

Die Reihenfolge für die Duplizierung der oben genannten Eigenschaften ist nicht festgelegt. dateikopie wird nicht gelöscht, wenn diese Eigenschaften nicht beibehalten werden können.

datei

Dateiname des Originals.

dateikopie

Dateiname der Kopie.
Wenn es noch keine Datei mit dem Namen dateikopie gibt, wird sie neu angelegt.

Ist die Option -p nicht gesetzt, so erhält die Kopie die gleichen Zugriffsrechte wie das Original sowie die Benutzer- und Gruppennummer des Benutzers, der cp aufgerufen hat. Das Änderungsdatum wird jedoch nicht dupliziert, d.h., dass das aktuelle Datum gesetzt wird.


Achtung!
Wenn es bereits eine Datei mit dem Namen dateikopie gibt, wird der Inhalt dieser Datei ohne Rückfrage überschrieben, falls sie nicht die Option -i angegeben haben; Zugriffsrechte, Eigentümer und Gruppe bleiben aber unverändert.


Wenn dateikopie ein Verweis auf eine Datei ist, bleiben alle Verweise erhalten. Der Inhalt der Datei dateikopie wird mit dem Inhalt von datei überschrieben.


Format 2: cp[ -fip] datei ... dateiverzeichnis

Dateien in ein anderes Dateiverzeichnis kopieren


-fip

siehe Format 1

datei

Dateiname des Originals. Sie können mehrere Namen angeben und so auf einmal mehrere Dateien kopieren. Die Kopien erhalten jeweils denselben Dateinamen wie die Originale.


Achtung!
Wenn es in dateiverzeichnis bereits eine Datei gibt, die denselben einfachen Dateinamen hat wie die Originaldatei, so wird der Inhalt der Datei ohne Rückfrage überschrieben, falls Sie nicht die Option -i angegeben haben.


dateiverzeichnis

Name des Dateiverzeichnisses, in das die Kopien eingetragen werden sollen. Es darf nicht das Dateiverzeichnis sein, in dem die Originale stehen.

Ist die Option -p nicht gesetzt, so erhalten die Kopien die gleichen Zugriffsrechte wie die Originale sowie die Benutzer- und Gruppennummer des Benutzers, der cp aufgerufen hat. Das Änderungsdatum wird jedoch nicht dupliziert, d.h., dass das aktuelle Datum gesetzt wird.


Format 3: cp -R[ -fip] datei ... dateiverzeichnis


-fip

siehe Format 1

-R

Kopiert Dateihierarchien.

Wurde die Option -R gesetzt, so werden die folgenden Schritte durchgeführt:

  1. dateikopie wird mit demselben Dateityp erstellt wie datei.
  2. Für dateikopie werden die Zugriffsrechte so gesetzt, wie sie auch für datei gelten. Anschließend erfolgt eine Modifikation durch die Dateierstellungsmaske des Benutzers, wenn die Option -p nicht gesetzt wurde.

Schlägt dieser Vorgang aus irgendeinem Grund fehl, so schreibt cp eine Meldung auf die Standard-Fehlerausgabe. datei wird nicht weiter bearbeitet. Gegebenenfalls werden aber noch weitere Dateien bearbeitet.

datei, dateiverzeichnis

siehe Format 2


Format 4: cp -r[ -fip] datei ... dateiverzeichnis


-fip

siehe Format 1

-R

Kopiert Dateihierarchien. Die Behandlung von Gerätedateien ist implementationsabhängig.

Wurde die Option -r gesetzt, so ist die Behandlung von special files implementationsabhängig.

datei, dateiverzeichnis

siehe Format 2

Vorgehensweise

Wenn dateiverzeichnis bereits existiert und ein Verzeichnis ist, so ist der Name des Zielpfades für die einzelnen Dateien in der Dateihierarchie eine Verkettung aus dateiverzeichnis, einem Schrägstrich und dem relativen Pfadnamen der Datei zu dem Verzeichnis, das datei enthält.

Wenn es dateiverzeichnis noch nicht gibt und zwei Operanden angegeben sind, so ist der Name des entsprechenden Zielpfades für datei das Verzeichnis dateiverzeichnis. Der Name des entsprechenden Zielpfades für alle anderen Dateien in der Dateihierarchie ist eine Verkettung aus dateiverzeichnis, einem Schrägstrich und dem relativen Pfadnamen der Datei zu datei.

Es tritt ein Fehler auf, wenn dateiverzeichnis nicht existiert und mehr als zwei Operanden angegeben werden. Es tritt ebenfalls ein Fehler auf, wenn dateiverzeichnis existiert und eine Datei eines in der XSH-Spezifikation definierten Typs ist, aber kein Dateiverzeichnis.

In der folgenden Beschreibung ist datei die Datei, die kopiert wird, egal ob die Angabe über einen Operanden erfolgt oder ob sie als Datei in einer Dateihierarchie in einem Operanden datei angegeben wird. Der Begriff dateikopie verweist auf die Datei, die durch den Zielpfad angegeben wird.

Für jede datei werden die folgenden Schritte durchgeführt:

  1. Wenn datei und dateikopie auf die gleiche Datei verweisen, schreibt cp gegebenenfalls eine Meldung auf die Standard-Fehlerausgabe. datei wird nicht weiter bearbeitet. Gegebenenfalls werden aber noch weitere Dateien bearbeitet.

  2. Ist datei ein Dateiverzeichnis, so werden die folgenden Schritte durchgeführt:

    1. Wurde weder die Option -R noch die Option -r angegeben, so schreibt cp eine Meldung auf die Standard-Fehlerausgabe. datei wird nicht weiter bearbeitet. Gegebenenfalls werden aber noch weitere Dateien bearbeitet.

    2. Wurde datei nicht als Operand angegeben, und ist datei entweder "." oder "..", so wird datei nicht weiter bearbeitet. Gegebenenfalls werden aber noch weitere Dateien bearbeitet.

    3. Falls dateikopie/dateiverzeichnis vorhanden ist und ein Dateityp ist, der nicht durch die XSH-Spezifikation angegeben wird, so ist das Verhalten implementationsabhängig.

    4. Existiert dateikopie/dateiverzeichnis, und es handelt sich nicht um ein Verzeichnis, so schreibt cp eine Meldung auf die Standard-Fehlerausgabe. datei sowie alle Dateien, die in der Dateihierarchie unterhalb von datei angeordnet sind, werden nicht weiter bearbeitet. Gegebenenfalls werden aber noch weitere Dateien bearbeitet.

    5. Existiert das Verzeichnis dateikopie/dateiverzeichnis nicht, so wird es mit den Zugriffsrechten erstellt, die auch für datei gelten. Anschließend erfolgt eine Modifikation durch die Dateierstellungsmaske des Benutzers, wenn die Option -p nicht gesetzt wurde, sowie eine bitweise, inklusive ODER-Operation mit S_IRWXU. Wenn dateikopie nicht erstellt werden kann, so schreibt cp eine Meldung auf die Standard-Fehlerausgabe. datei wird nicht weiter bearbeitet. Gegebenenfalls werden aber noch weitere Dateien bearbeitet. Es ist nicht vorhersehbar, ob cp versucht, Dateien in der Dateihierarchie von datei zu kopieren.

    6. Dateien im Verzeichnis datei werden in das Verzeichnis dateikopie/dateiverzeichnis kopiert. Dabei werden die Schritte 1 bis 4 mit den dateien durchgeführt.

    7. War dateikopie/dateiverzeichnis bereits erstellt, so werden die Zugriffsrechte (gegebenenfalls) geändert und an die Zugriffsrechte von datei angepasst. Anschließend erfolgt eine Modifikation durch die Dateierstellungsmaske des Benutzers, wenn die Option -p nicht angegeben wurde.

    8. cp führt keine weitere Bearbeitung von datei durch. Gegebenenfalls werden aber noch weitere Dateien bearbeitet.

  3. Ist datei eine reguläre Datei, so werden die folgenden Schritte durchgeführt:

    1. Liegt dateikopie vor, so werden die folgenden Schritte durchgeführt:

      1. Ist die Option -i wirksam, so schreibt cp eine Eingabeaufforderung auf die Standard-Fehlerausgabe und liest eine Zeile von der Standard-Eingabe. Stellt die Eingabe keine Bestätigung dar, so führt cp keine weitere Bearbeitung von datei durch. Gegebenenfalls werden aber noch weitere Dateien bearbeitet.

      2. Es wird ein Dateideskriptor für dateikopie erhalten, indem Schritte entsprechend der Funktion open() gemäß der XSH-Spezifikation mit dateikopie als Argument für den Pfad und der bitweisen, inklusiven ODER-Operation von O_WRONLY und O_TRUNC als Argument oflag durchgeführt werden.
      3. Misslingt der Versuch, einen Dateideskriptor zu erhalten, und die Option -f ist wirksam, so versucht cp, die Datei zu entfernen, indem Schritte entsprechend der Funktion unlink() gemäß der XSH-Spezifikation mit dateikopie als Argument für den Pfad durchgeführt werden. Ist dieser Versuch erfolgreich, so setzt cp die Bearbeitung mit dem Schritt 3b fort.
    2. Liegt dateikopie nicht vor, so wird ein Dateideskriptor erhalten, indem Schritte entsprechend der Funktion open() gemäß der XSH-Spezifikation mit dateikopie als Argument für den Pfad und der bitweisen, inklusiven ODER-Operation von O_WRONLY und O_CREAT als Argument oflag durchgeführt werden. Die Zugriffsrechte für datei werden dem Argument mode entnommen.
    3. Misslingt der Versuch, einen Dateideskriptor zu erhalten, schreibt cp eine Meldung auf die Standard-Fehlerausgabe. datei wird nicht weiter bearbeitet. Gegebenenfalls werden aber noch weitere Dateien bearbeitet.
    4. Der Inhalt von datei wird in den Dateideskriptor geschrieben. Treten Schreibfehler auf, so schreibt cp eine Meldung auf die Standard-Fehlerausgabe und setzt die Bearbeitung mit Schritt 3e fort.
    5. Der Dateideskriptor wird geschlossen.
    6. cp bearbeitet datei nicht weiter. Trat in Schritt 3d ein Schreibfehler auf, so ist nicht vorhersehbar, ob cp gegebenenfalls noch weitere Dateien bearbeitet. Trat in Schritt 3d kein Schreibfehler auf, so bearbeitet cp noch weitere Dateien.

Fehler

cp: Cannot access datei

datei existiert nicht.


cp: Cannot open datei : Permission denied
Sie haben kein Leserecht für datei.


cp: cannot create datei
Sie haben kein Schreibrecht für das Dateiverzeichnis, in dem datei angelegt werden soll, bzw. dieses Dateiverzeichnis existiert nicht.


cp: dvz directory
dvz ist ein Dateiverzeichnis und kann nicht kopiert werden (Format 1), bzw. Sie haben -r nicht gesetzt (Format 4).

Internationale Umgebung

Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos cp:

LANG

Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden.

LC_ALL

Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen.

LC_COLLATE

Legt die internationale Umgebung für das Verhalten von Bereichen, Äquivalenzklassen und Zeicheneinheiten in erweiterten regulären Ausdrücken für ja/nein-Abfragen fest.

LC_CTYPE

Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten).

LC_MESSAGES

Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden.

NLSPATH

Legt den Pfad der Meldungsdateien für LC_MESSAGES fest.

Beispiel 1

Die Datei fachliteratur soll kopiert werden, bevor man sie verändert. Die Kopie soll fl heißen und im gleichen Dateiverzeichnis stehen wie fachliteratur.

$ cp fachliteratur fl

Beispiel 2

Alle Dateien aus dem aktuellen Dateiverzeichnis, deren Namen mit dat beginnen, sollen ins Dateiverzeichnis /home/do/sicher kopiert werden. Dabei soll auch das Datum der letzten Änderung dupliziert werden.

$ cp -p dat* /home/do/sicher

$ ls -l /home/do/sicher

total 4

-rw------  1  DOBER  gr1        37 Nov 11 11:11  datei1

-rw------  1  DOBER  gr1        97 Apr 01 13:24  datei2

-rw------  1  DOBER  gr1       116 Dec 31 12:13  datei3
-rw------  1  DOBER  gr1       381 Feb 16 08:08  datei4

Siehe auch

chmod, ln, mv, rm