Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
cp steht für copy und ist der Befehl zum Kopieren von Dateien und Verzeichnissen.
Das Programm ist im essentiellen Paket
coreutils
von Ubuntu enthalten und ist deshalb auf jedem System installiert.
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 |
-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.
Die Datei datei.txt aus dem aktuellen Verzeichnis nach /Dokumente kopieren, falls diese neuer ist als die bestehende:
cp -u datei.txt /Dokumente/datei.txt
Die Dateien datei.txt, dokument.odt nach /Dokumente kopieren, wenn neuer als bestehende, und Kopierfortschritt anzeigen:
cp -uv datei.txt dokument.odt /Dokumente
Dateien mit bestimmtem Anfangsbuchstaben da*.txt, do*.odt kopieren, wenn neuer als bestehende, und Kopierfortschritt anzeigen:
cp -uv da*.txt do*.odt /Dokumente
Im letzten Beispiel werden alle Dateien aus /home/Otto samt der verstecken Einstellungsdateien rekursiv ins Verzeichnis Sicherungen kopiert, welches sich auf dem eingehängten Laufwerk sda9 befindet.
cp -a /home/Otto/. /media/sda9/Sicherungen
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.
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
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.
Diese Revision wurde am 17. April 2016 09:12 von Seebär erstellt.