cp
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
cp steht für copy und ist der Befehl zum Kopieren, es können Dateien oder ganze Verzeichnisse kopiert werden. Verzeichnisse können optional auch rekursiv, also inklusive Unterverzeichnissen, kopiert werden.
Installation¶
Das Programm ist im essentiellen Paket
coreutils
von Ubuntu enthalten und ist deshalb auf jedem System installiert.
Aufruf¶
Die allgemeine Syntax lautet [1]:
cp [OPTIONEN] QUELLE ZIEL
QUELLE
und ZIEL
können dabei sowohl Dateien als auch ein Verzeichnis sein. Während die Angabe von mehreren Quellen möglich ist, kann hingegen immer nur ein Ziel angegeben werden.
Optionen von cp | |
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, Besitzer-, Gruppen- und Zugriffsrechten |
-P (groß) oder --no-dereference | Symbolische Links als symbolische Links kopieren, statt den Links in der Quelle zu folgen |
-r oder -R oder --recursive | Verzeichnisse rekursiv kopieren (Unterverzeichnisse eingeschlossen) |
-s oder --symbolic-link | kopiert nicht, sondern erstellt symbolischen Link |
-u oder --update | kopiert nur, wenn Zieldatei älter als Quelldatei |
-v oder --verbose | Durchgeführte Tätigkeiten "erklären" / anzeigen |
cp kennt noch eine Reihe von weiteren Optionen, die man mit Hilfe der Option --help
aufrufen kann. Oder man schaut in die Manpage von cp.
Beispiele¶
Die Datei datei.txt aus dem aktuellen Verzeichnis nach /home/BENUTZER/Dokumente kopieren, falls diese neuer ist als die bestehende:
cp -u datei.txt /home/BENUTZER/Dokumente/datei.txt
Die Dateien datei.txt, dokument.odt nach /home/BENUTZER/Dokumente kopieren, wenn neuer als bestehende, und Kopierfortschritt anzeigen:
cp -uv datei.txt dokument.odt /home/BENUTZER/Dokumente
Dateien mit bestimmtem Anfangsbuchstaben da*.txt, do*.odt kopieren, wenn neuer als bestehende, und Kopierfortschritt anzeigen:
cp -uv da*.txt do*.odt /home/BENUTZER/Dokumente
Im letzten Beispiel werden alle Dateien aus /home/BENUTZER samt der versteckten Einstellungsdateien rekursiv ins Verzeichnis Sicherungen kopiert, welches sich auf dem eingehängten Laufwerk sda9 befindet.
cp -a /home/BENUTZER/. /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):
shopt -s extglob
Der Befehl muss jedes mal ausgeführt werden oder man trägt ihn in die bashrc ein. Im Folgenden der angewandte cp-Befehl:
cp -av /QUELLE/!(Datei1.txt|Festplattenabbild*|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 mit Hilfe von cp auch einen Live-USB-Stick erstellen, ohne die Programme dd oder UNetbootin nutzen zu müssen. Dazu muss aber der Stick ausgehängt sein. Außerdem ist es wichtig, dass man als Ziel die Gerätedatei und nicht den Namen des Einhängepunktes anspricht.
Befehlsschema:
sudo cp PFAD/ZUR/ISO.iso /dev/USB_DEVICE
Beispiel:
sudo cp Downloads/ubuntu-12.04.3-desktop-amd64.iso /dev/sdb
Statusanzeige¶
Einige Distribution bieten cp mit der Option -g
an. Bei größeren Kopierzeiten wird dann ein Statusbalken angezeigt. Um dies in Ubuntu zu erreichen, muss man entweder einen sogenannten progress bar-Patch einspielen, auf Skripte oder gleich rsync zurückgreifen.
Links¶
intern¶
pycp - Kopierbefehl mit grafischer Fortschrittanzeige und Angabe der Kopiergeschwindigkeit
Shell/Befehlsübersicht Übersicht über verschiedene Shell-Befehle
extern¶