Cp
Getestet: Dieser Hinweis soll dir dabei helfen, zu entscheiden, ob dieser Artikel auf deinem System funktionieren wird oder nicht. Solltest du feststellen, dass dieser Artikel bei einer ungetestet Version funktioniert, kannst du das gerne hier korrigieren oder im Forum anmerken.
|
cp steht für copy und ist der Befehl zum Kopieren von Dateien und Verzeichnissen.
Installation
Das Programm cp ist im essentiellen Paket
von Debian enthalten und ist deshalb auf jedem System installiert.
Verwendung
Die allgemeine Syntax von cp lautet
user@debian:~$ cp [OPTIONEN] QUELLE ZIEL
QUELLE und ZIEL können dabei sowohl Dateien als auch ein Verzeichnis sein.
Option | Beschreibung |
---|---|
- a oder --archive | Beibehaltung von Besitzer-, Gruppen- und Zugriffsrechten und Erstellungs-, Modifikations- und Zugriffsdaten (entspricht -dR --preserve=all) |
- b oder --backup | Sichert Dateien vor dem Überschreiben, wenn diese unterschiedlich sind |
- d | erhält symbolische Links, folgt ihnen aber nicht beim Kopieren (entspricht -P --preserve=links) |
- i oder --interactive | fragt vor Überschreiben nach |
- l oder --link | kopiert nicht, sondern erstellt harten Link |
- n oder --no-clobber | niemals vorhandene Dateien überschreiben (-i wird wirkungslos) |
- p (klein) oder --preserve=mode,ownership,timestamps | erhält Standard-Dateiattribute, wie Zeitpunkt des letzten Schreibzugriffs |
- P (groß) oder --no-dereference | niemals symbolischen Links in der Quelle folgen |
- r oder -R oder --recursive | Verzeichnisse rekursiv kopieren |
- s oder --symbolic-link | kopiert nicht, sondern erstellt symbolischen Link |
- u oder --update | kopiert nur, wenn Zieldatei älter als Quelldatei |
- v oder --verbose | zeigt den Kopierfortschritt an |
cp kennt noch eine Reihe von weiteren Optionen, die man mit Hilfe der Option --help aufrufen kann. Oder man schaut in die Manpages von cp (Siehe auch: Dokumentation_Finden).
Hinweis: Um zu Prüfen, ob die Dateiübertragung vollständig ausgeführt wurde (auch die Cacheleerung), kann nach der Übertragung einen Sync-Befehl geben:
user@debian:~$ sync
|
Beispiele
Die Datei datei.txt aus dem aktuellen Verzeichnis nach /Dokumente kopieren, falls diese neuer ist als die bestehende:
user@debian:~$ cp -u datei.txt /Dokumente/datei.txt
Die Dateien datei.txt, dokument.odt nach /Dokumente kopieren, wenn neuer als bestehende, und Kopierfortschritt anzeigen
user@debian:~$ cp -uv datei.txt dokument.odt /Dokumente
Dateien mit bestimmtem Anfangsbuchstaben da*.txt, do*.odt kopieren, wenn neuer als bestehende, und Kopierfortschritt anzeigen
user@debian:~$ cp -uv da*.txt do*.odt /Dokumente
Im letzten Beispiel werden alle Dateien aus /home/Patsche samt der verstecken Einstellungsdateien rekursiv ins Verzeichnis Sicherungen kopiert, welches sich auf dem eingehängten Laufwerk sda9 befindet.
user@debian:~$ cp -a /home/Patsche/. /media/sda9/Sicherungen
Dateien/Ordner ausschließen
Leider enthält cp keine --exclude-Option wie andere Kopierprogramme, jedoch gibt bereits die Shell einen Weg her, der es ermöglicht ressourcensparend Muster auszuschließen. Dazu muss z.B. in bash die Shell-Option extglob gesetzt werden, die den erweiterten Musterabgleich aktiviert (extended globbing):
user@debian:~$ shopt -s extglob
Der Befehl muss jedesmal ausgeführt werden oder man trägt ihn in die bashrc ein. Im Folgenden der angewandte cp-Befehl:
user@debian:~$ cp -av /QUELLE/!(Datei1.txt
user@debian:~$ Festplattenabbild*
user@debian:~$ Ordner/Unterordner1) /ZIEL/
Durch das Muster !() werden alle Dateien und Ordner, die mit "Datei1.txt", "Festplattenabbild" und "Unterorder1" beginnen, ausgeschlossen. Darüber hinaus werden alle Dateien und Ordner von QUELLE nach ZIEL kopiert.
Live-USB-Stick erstellen
Man kann auch mit Hilfe von cp einen Live-USB-Stick erstellen ohne dd oder UNetbootin. dazu muss aber der Stick ausgehängt sein. Außerdem ist es wichtig, dass man als Ziel die Gerätedatei anspricht und nicht den Namen des Einhängepunktes. Man verwendet zum Erstellen folgenden Befehl:
root@debian:~# cp [Quelle] [Ziel]
Also:
root@debian:~# cp PFAD/ZUR/ISO.iso /dev/USB_DEVICE
Beispiel:
root@debian:~# cp Downloads/debian-7.2.0-amd64-netinst /dev/sdb