Linux-Praxisbuch/ cp
Der Konsolen Befehl cp - copy - Kopieren von Dateien
Allgemeines
[Bearbeiten]Der Befehl cp (copy) kopiert Dateien an eine andere Stelle.
Eine Datei
[Bearbeiten]cp bild.jpg bilder/
Kopiert die Datei bild.jpg in das Verzeichnis bilder/ (unter Beibehaltung des Dateinamens).
Wenn nur eine einzige Quelldatei angegeben wird, kann diese beim Kopieren auch einen neuen Namen erhalten und dann im gleichen Verzeichnis wie die Quelldatei liegen.
cp foo bar
Legt eine Kopie der Datei foo unter dem Namen bar ab.
Mehrere Dateien
[Bearbeiten]Bei mehreren Quelldateien muss ein Zielverzeichnis angegeben werden, in das die Dateien unter Beibehaltung ihres Namens kopiert werden. Als Joker dient wie üblich das Sternchen *:
# Drei Bilder in den Ordner bilder/ kopieren cp bild1.jpg bild2.jpg bild3.jpg bilder/
# Alle JPG-Dateien in den Ordner bilder/ kopieren cp *.jpg bilder/
Mehrere Dateien unter neuem Namen ablegen
[Bearbeiten]VORSICHT: cp *.txt *.bak funktioniert nicht!
Um mehrere Dateien unter einem neuen Namen zu kopieren, benötigt man einen Einzeiler wie den folgenden:
for i in *.txt; do cp $i ${i%.*}.bak; done
Verzeichnisse kopieren
[Bearbeiten]Standardmäßig kopiert cp keine Verzeichnisse und quittiert einen solchen Versuch folgendermaßen:
$ cp urlaub/ bilder/ cp: Verzeichnis „urlaub/“ ausgelassen
Damit cp auch Verzeichnisse kopiert, muss man es mit dem Schalter -R rekursiv arbeiten lassen:
$ ls urlaub/ urlaub01.jpg $ cp -r urlaub/ bilder/ $ ls bilder/ bild1.jpg bild2.jpg bild3.jpg urlaub/ $ ls bilder/urlaub/ urlaub01.jpg
Legt eine Kopie des Unterverzeichnisses „urlaub“ und eine Kopie des Inhalts unter dem Verzeichnisnamen „bilder" an.
Informationen und Fehlermeldungen des Befehls cp
[Bearbeiten]Normalerweise gibt der Befehl cp keine Meldung oder Fehlermeldung aus. Sie sollten deswegen den Befehl cp immer mit dem Parameter -v (verbose - offengelegt) nutzen. So erhalten Sie von jedem Kopiervorgang eine Meldung und können verfolgen, was Ihr Computer getan hat.
Existiert die Datei gar nicht, die Sie kopieren wollen, bekommen Sie folgende Fehlermeldung:
cp: Aufruf von stat für name nicht möglich: Datei oder Verzeichnis nicht gefunden
Wenn das Zielverzeichnis wegen fehlender Zugriffsberechtigung nicht angelegt werden kann gibt es folgende Meldung:
cp: reguläre Datei kann nicht angelegt werden: Keine Berechtigung
Wenn Sie mehrere Dateien kopieren und der letzte Parameter ihrer Befehlseingabe ist kein Verzeichnis, erhalten Sie folgende Fehlermeldung:
cp: Kopieren mehrerer Dateien, aber der letzte Parameter ,,/home/name/t/test.txt" ist kein Verzeichnis
Syntax
[Bearbeiten]cp kann wie folgt aufgerufen werden:
cp [OPTION]... QUELLE ZIEL cp [OPTION]... QUELLEN... ZIEL
Beispiele:
cp QuellDatei ZielDatei cp Datei Zielverzeichnis cp Datei1 Datei2 Datei3 Zielverzeichnis
Alternativ kann man auch zuerst das Zielverzeichnis angeben und danach die Quelle(n):
cp [OPTION]... -t ZIEL QUELLEN...
Optionen
[Bearbeiten]-a
a steht hier für archivieren. Die Option entspricht dem Befehl cp -dpR. Die Dateien werden unter Beibehaltung von Besitzer-, Gruppen- und Zugriffsrechten und Erstellungs-, Modifikations- und Zugriffsdaten kopiert.
-b
b steht hier für backup: Würde durch den Kopiervorgang eine bereits vorhandene Datei gleichen Namens überschrieben, so wird diese vorher gesichert.
-f
f steht hier für force. Ist im Zielverzeichnis ein Dateiname bereits vorhanden, so wird die alte Datei überschrieben. Wenn eine existierende Zieldatei nicht geöffnet werden kann, wird sie gelöscht und der Kopiervorgang dann noch einmal versucht
-i
i steht hier für interaktiv: Vor dem Überschreiben einer bereits vorhandenen Datei erfolgt eine Sicherheitsabfrage mit Ja /nein.
-P
Die relativen Pfadangaben der Quelldatei werden übernommen. Es wird im Zielverzeichnis eine entsprechende Unterverzeichnisstruktur erstellt. Beispiel:
cp -P /usr/bin/less /tmp
erzeugt die Datei /tmp/usr/bin/less
-R
R steht hier für Rekursiv: Alle Unterverzeichnisse und die enthaltenen Dateien werden (rekursiv) mitkopiert.
-r
Rekursiv: alle Unterverzeichnisse und die enthaltenen Dateien werden (rekursiv) mitkopiert. Im Gegensatz zu »-R« werden alle Verzeichniseinträge, die keine Unterverzeichnisse sind, wie gewöhnliche Dateien kopiert.
-u
Wenn im Zielverzeichnis eine Datei gleichen Namens schon vorhanden ist, wird diese nur überschrieben, wenn die Datei, die kopiert werden soll neuer ist als die bereits vorhandene.
-x
Beim rekursiven Kopieren werden Verzeichnisse, die sich in einem anderen Dateisystem befinden (andere Partition), nicht mitkopiert.
-l, --link
Verknüpfung (hardlinks) auf Datei statt Kopie erstellen. Der zur Datei zugehörige Inode ist nur einmal physikalisch auf der Platte, es kann aber von 2 Pfaden zugegriffen werden.
Siehe auch
[Bearbeiten]Alternativen
[Bearbeiten]- Alternativ arbeitet man mit dem Konqueror unter KDE
- Oder man arbeitet mit dem Midnight Commander auf der Konsole
- Zum Umbenennen und Verschieben gibt es auch den Befehl mv (= move)
Hilfe
[Bearbeiten]Hilfe zum Befehl cp bekommen Sie auf Ihrer Konsole mit:
cp --help
oder
man cp