ubuntuusers.de

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:

Wiki/Icons/terminal.png 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
OptionBeschreibung
-a oder --archive Beibehaltung von Besitzer-, Gruppen- und Zugriffsrechten und Erstellungs-, Modifikations- und Zugriffsdaten (entspricht -dR --preserve=all)
-b oder --backupSichert 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 --interactivefragt vor Überschreiben nach
-l oder --linkkopiert nicht, sondern erstellt harten Link
-n oder --no-clobber niemals vorhandene Dateien überschreiben (-i wird wirkungslos)
-p (klein) oder --preserve=mode,ownership,timestampserhä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 --recursiveVerzeichnisse rekursiv kopieren (Unterverzeichnisse eingeschlossen)
-s oder --symbolic-linkkopiert nicht, sondern erstellt symbolischen Link
-u oder --updatekopiert nur, wenn Zieldatei älter als Quelldatei
-v oder --verboseDurchgefü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.

intern

  • pycp - Kopierbefehl mit grafischer Fortschrittanzeige und Angabe der Kopiergeschwindigkeit

  • Shell/Befehlsübersicht Übersicht über verschiedene Shell-Befehle

extern

Diese Revision wurde am 8. Januar 2019 21:04 von superhonk erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Datensicherung, Backup, Shell