Wer unter einem der zahl­rei­chen Open-Source-Dis­tri­bu­tio­nen, die auf Linux basieren, mit der Kom­man­do­zei­le arbeiten will, muss ver­schie­de­ne Linux-Befehle kennen. Diese er­mög­li­chen es, durch Ord­ner­struk­tu­ren zu na­vi­gie­ren, Daten zu be­ar­bei­ten oder – wie in diesem Fall – Dateien und Ver­zeich­nis­se zu kopieren. Mit dem CP-Befehl (kurz für „copy“) können Sie Kopien von aus­ge­wähl­ten Dateien oder ganzen Ordnern erstellen.

KI-Assistent kostenlos – Ihr smarter All­tags­hel­fer
  • DSGVO-konform & sicher gehostet in Deutsch­land
  • Pro­duk­ti­vi­tät steigern – weniger Aufwand, mehr Output
  • Direkt im Browser starten – ohne In­stal­la­ti­on

Wofür braucht man unter Linux CP?

Das Kopieren von Dateien und Ordnern gehört zu den Grund­la­gen eines jeden Be­triebs­sys­tems und wird von den meisten Nutzern täglich aus­ge­führt. Kopien werden ein­ge­setzt, um sie mit anderen Personen zu teilen oder zur Sicherung zu verwahren. In der Regel ist dieses Werkzeug fester (und bereits in­stal­lier­ter) Be­stand­teil jeder Linux-In­stal­la­ti­on – egal, welche Dis­tri­bu­ti­on man verwendet. CP gehört zu den GNU Core Utilities (kurz: „coreutils“). Dieses Paket mit den wich­tigs­ten Werk­zeu­gen steht zur freien Ver­wen­dung bereit.

Syntax von Linux-CP

Die grund­le­gen­de Funktion von CP ist einfach: Eine oder mehrere Dateien an einem vom Nutzer fest­ge­leg­ten Ort kopieren. Dafür sind vor allem zwei In­for­ma­tio­nen wichtig: Name des Objekts und das Ziel des Vorgangs. Dem­entspre­chend ist auch die Syntax von CP aufgebaut:

cp [Original] [Ziel]

Dafür navigiert man in das Ver­zeich­nis der zu ko­pie­ren­den Datei und gibt dann im Befehl den Da­tei­na­men und den Pfad an, unter dem die neue Datei ge­spei­chert werden soll.

cp text.txt /home/benutzer/zielordner/

In diesem Beispiel erstellen wir eine neue Datei im Ziel­ord­ner, die den gleichen Namen wie die Aus­gangs­da­tei hat. Wer mehrere Dateien gleich­zei­tig kopieren möchte, führt diese innerhalb der gleichen Be­fehls­zei­le hin­ter­ein­an­der auf.

cp text1.txt text2.txt text3.txt /home/benutzer/zielordner/

In den bis­he­ri­gen Bei­spie­len haben wir der Kopie immer den gleichen Namen wie der Aus­gangs­da­tei gegeben. Sie können den Da­tei­na­men frei bestimmen, indem Sie diesen mit in den Ziel­pa­ra­me­ter eintragen:

cp text.txt /home/benutzer/zielordner/text_kopie.txt

Lässt man den Pfad des Ziel­ord­ners weg, wird die Kopie mit neuem Da­tei­na­men im gleichen Ordner wie die Ori­gi­nal­da­tei erzeugt.

cp text1.txt text2.txt

Besondere Funk­tio­nen von CP

Der Linux-CP-Befehl kann noch weitere Aufgaben erledigen. Dafür verwendet man das Op­tio­nen­feld:

cp [Option(en)] [Original(e)] [Ziel]

Folgende Parameter (flags) können Sie in das Feld eintragen, um so die Ko­pier­ar­beit um­fang­rei­cher oder einfacher zu gestalten.

Parameter Be­schrei­bung Beispiel
-a Kopiert die Datei mit der gleichen Rech­te­ein­stel­lung und den gleichen Metadaten wie beim Original. cp -a text.txt /home/benutzer/ziel­ord­ner/
--archive Kopiert die Datei mit der gleichen Rech­te­ein­stel­lung und den gleichen Metadaten wie beim Original. cp --archive text.txt /home/benutzer/ziel­ord­ner/
-b Erzeugt eine Kopie im Zwi­schen­spei­cher, wenn Original und Ziel den gleichen Da­tei­na­men, aber un­ter­schied­li­chen Inhalt haben. cp -b text.txt /home/benutzer/ziel­ord­ner/
--backup Erzeugt eine Kopie im Zwi­schen­spei­cher, wenn Original und Ziel den gleichen Da­tei­na­men, aber un­ter­schied­li­chen Inhalt haben. cp --backup text.txt /home/benutzer/ziel­ord­ner/
--backup=numbered Erstellt eine neue num­me­rier­te Datei, wenn Original und Ziel den gleichen Da­tei­na­men, aber un­ter­schied­li­chen Inhalt haben. cp --backup==numbered text.txt /home/benutzer/ziel­ord­ner/
--backup=existing Erstellt eine neue num­me­rier­te Datei, wenn Original und Ziel den gleichen Da­tei­na­men, aber un­ter­schied­li­chen Inhalt haben – und es bereits num­me­rier­te Backups gibt. cp --backup==existing text.txt /home/benutzer/ziel­ord­ner/
-d Kopiert sym­bo­li­sche Links. cp -d text.txt /home/benutzer/ziel­ord­ner/
-f Erzwingt das Über­schrei­ben beim Kopieren. cp -f text.txt /home/benutzer/ziel­ord­ner/text.txt
--force Erzwingt das Über­schrei­ben beim Kopieren. cp --force text.txt /home/benutzer/ziel­ord­ner/text.txt
-i Fragt vor dem Über­schrei­ben von gleich­na­mi­gen Dateien um Erlaubnis. cp -i text.txt /home/benutzer/ziel­ord­ner/
--in­ter­ac­ti­ve Fragt vor dem Über­schrei­ben von gleich­na­mi­gen Dateien um Erlaubnis. cp --in­ter­ac­ti­ve text.txt /home/benutzer/ziel­ord­ner/
-l Erstellt statt einer Kopie einen Hardlink. cp -l text.txt /home/benutzer/ziel­ord­ner/
--link Erstellt statt einer Kopie einen Hardlink. cp --link text.txt /home/benutzer/ziel­ord­ner/
-n Vor­han­de­ne Dateien werden niemals über­schrie­ben. cp -n text.txt /home/benutzer/ziel­ord­ner/
--no-cobbler Vor­han­de­ne Dateien werden niemals über­schrie­ben. cp –no-cobbler text.txt /home/benutzer/ziel­ord­ner/
-p Attribute der Ori­gi­nal­da­tei werden beim Kopieren vererbt. cp -p text.txt text1.txt
--preserve Attribute der Ori­gi­nal­da­tei werden beim Kopieren vererbt. cp --preserve text.txt text1.txt
--preserve=mode Der Modus der Ori­gi­nal­da­tei wird beim Kopieren vererbt. cp --preserve==mode text.txt text1.txt
--preserve=ownership Die Be­sitz­rech­te der Ori­gi­nal­da­tei werden beim Kopieren vererbt. cp --preserve==ownership text.txt text1.txt
--preserve=timestamp Der Zeit­stem­pel der Ori­gi­nal­da­tei wird beim Kopieren vererbt. cp --preserve==timestamp text.txt text1.txt
--preserve=links Ver­lin­kun­gen der Ori­gi­nal­da­tei werden beim Kopieren vererbt. cp --preserve==links text.txt text1.txt
--preserve=context Der Si­cher­heits­kon­text der Ori­gi­nal­da­tei wird beim Kopieren vererbt. cp --preserve==context text.txt text1.txt
--preserve=xattr Er­wei­ter­te Attribute der Ori­gi­nal­da­tei werden beim Kopieren vererbt. cp --preserve==xattr text.txt text1.txt
--preserve=alle Alle Attribute der Ori­gi­nal­da­tei werden beim Kopieren vererbt. cp --preserve==all text.txt text1.txt
-P Sym­bo­li­sche Links werden als solche ge­spei­chert. cp -P text.txt /home/benutzer/ziel­ord­ner/
--no-de­re­fe­rence Sym­bo­li­sche Links werden als solche ge­spei­chert. cp --no-de­re­fe­rence text.txt /home/benutzer/ziel­ord­ner/
-r Ver­zeich­nis­se werden inklusive Un­ter­ver­zeich­nis­se rekursiv kopiert. cp -r /home/benutzer/ori­gi­nal­ord­ner/ /home/benutzer/ziel­ord­ner/
-R Ver­zeich­nis­se werden inklusive Un­ter­ver­zeich­nis­se rekursiv kopiert. cp -R /home/benutzer/ori­gi­nal­ord­ner/ /home/benutzer/ziel­ord­ner/
--recursive Ver­zeich­nis­se werden inklusive Un­ter­ver­zeich­nis­se rekursiv kopiert. cp --recursive /home/benutzer/ori­gi­nal­ord­ner/ /home/benutzer/ziel­ord­ner/
-s Erstellt einen sym­bo­li­schen Link auf die Ori­gi­nal­da­tei. cp -s text.txt /home/benutzer/ziel­ord­ner/
--symbolic-link Erstellt einen sym­bo­li­schen Link auf die Ori­gi­nal­da­tei. cp --symbolic-link text.txt /home/benutzer/ziel­ord­ner/
-S Über­schreibt beim Kopieren mit --backup ein Backup-Suffix. cp --backup=simple -S text.txt /home/benutzer/ziel­ord­ner/
--suffix=eigenes_suffix Über­schreibt beim Kopieren mit --backup ein Backup-Suffix mit einem eigenen Begriff. cp --backup=simple –suffix=eigenes_suffix text.txt /home/benutzer/ziel­ord­ner/
-u Kopiert die Datei nur, wenn die Zieldatei älter als das Original ist. cp -u text.txt /home/benutzer/ziel­ord­ner/text.txt
--update Kopiert die Datei nur, wenn die Zieldatei älter als das Original ist. cp --update text.txt /home/benutzer/ziel­ord­ner/text.txt
-v Gibt nach dem Ko­pier­vor­gang eine Meldung aus. cp -v text.txt text1.txt
--verbose Gibt nach dem Ko­pier­vor­gang eine Meldung aus. cp --verbose text.txt text1.txt
Tipp

Viele Optionen können Sie auch mit­ein­an­der kom­bi­nie­ren. Dafür schreiben Sie die Parameter mit einem Leer­zei­chen getrennt in den An­fangs­be­reich des Befehls.

Beispiele für den Einsatz von CP

An der Vielzahl der Optionen für den Copy-Befehl kann man erkennen, dass sich CP unter Linux nicht nur für das einfache Kopieren von Dateien und Ordnern einsetzen lässt. Indem Sie die ver­schie­de­nen Parameter mit­ein­an­der kom­bi­nie­ren, können Sie um­fang­rei­che Aufgaben be­wäl­ti­gen. Die folgenden drei Beispiele folgen typischen An­wen­dungs­sze­na­ri­en im Alltag eines Linux-Users.

Num­me­rier­tes Backup

Gehen wir davon aus, dass Sie an einer Datei arbeiten und von dieser mehr oder weniger re­gel­mä­ßig ein Backup erzeugen möchten. Damit Sie Än­de­run­gen auch nach­voll­zie­hen und unter Umständen zu einem älteren Stand zu­rück­keh­ren können, werden einzelne Dateien angelegt. Dafür verwenden wir die er­wei­ter­te Backup-Option.

cp -f -v --backup=numbered text.txt text.txt

Wir erstellen dieses Backup unter dem gleichen Da­tei­na­men und auch im gleichen Ordner. Damit dies möglich ist, nutzen wir die ‚force‘-Option. Da wir zu­sätz­lich die ‚numbered‘-Option aktiviert haben, entstehen dennoch jeweils neue Dateien mit durch­num­me­rier­ten Da­tei­na­men. Dank ‚verbose‘ erhalten Sie nach jedem Ko­pier­vor­gang eine Be­nach­rich­ti­gung.

Das sieht in der Konsole dann so aus:

~$ cp -v -f --backup=numbered text.txt text.txt
'text.txt' -> 'text.txt.~1~'
~$ cp -v -f --backup=numbered text.txt text.txt
'text.txt' -> 'text.txt.~2~'
~$ cp -v -f --backup=numbered text.txt text.txt
'text.txt' -> 'text.txt.~3~'
~$ ls
text.txt  text.txt.~1~  text.txt.~2~  text.txt.~3~
Tipp

In Linux können Sie mit dem ls-Befehl eine Liste der im Ordner be­stehen­den Dateien und Un­ter­ord­ner anzeigen lassen.

Mit Wildcards Dateien sortieren

Sie haben einen Ordner voll mit ver­schie­dens­ten Dateien: Bilder, Dokumente und An­wen­dun­gen sind durch­ein­an­der abgelegt. Nehmen wir nun an, dass Sie alle Bilder in einen Ordner kopieren möchten. Statt nun alle Bilder einzeln in den Befehl ein­zu­tra­gen, arbeiten wir mit dem Asterisk (*), der als Wildcard dient. In unserem Beispiel ersetzen wir den kom­plet­ten Da­tei­na­men durch ein Sternchen und geben nur die Da­tei­endun­gen an.

cp *.jpg *.png /home/benutzer/Bilder

Durch diesen Befehl kopieren Sie alle Dateien mit den Endungen JPG und PNG in den Bil­der­ord­ner. Alle anderen Da­tei­for­ma­te werden ignoriert. Die Ori­gi­nal­da­tei­en bleiben übrigens bestehen, da Sie mit CP Daten nur kopieren und nicht ver­schie­ben.

Kopieren von Ver­zeich­nis­sen

Das rekursive Kopieren umfasst einen Ordner mitsamt seinen Un­ter­ord­nern. Die Ver­zeich­nis­struk­tur wird also mit­ge­nom­men. Beim einfachen Kopieren mit CP funk­tio­niert das nicht: Versucht man einen Ordner ohne ent­spre­chen­de Option zu kopieren, erhält man nur eine Feh­ler­mel­dung. Statt­des­sen setzt man den Parameter ‚-r‘ bzw. ‚--recursive‘ oder ‚-R‘.

In unserem Beispiel wollen wir re­gel­mä­ßig eine Si­che­rungs­ko­pie eines Ordners samt Inhalt und Un­ter­ord­ner anlegen. Damit nicht immer alles kopiert werden muss, setzen wir zu­sätz­lich die ‚update‘-Funktion ein.

cp -r -u /home/benutzer/Original/ /home/benutzer/Backups/

Wenn Sie den Befehl zum ersten Mal ausführen, wird innerhalb des Backup-Ordners das Ver­zeich­nis ‚Original‘ erstellt. Alle Dateien und Un­ter­ver­zeich­nis­se werden dort hin­ein­ko­piert. Bei großen Da­ten­men­gen kann dies einige Zeit dauern. Durch die Option ‚-u‘ kopieren Sie an­schlie­ßend immer nur geänderte Daten.

Al­ter­na­ti­ven zu Linux-CP

Trotz der zahl­rei­chen Optionen von CP ist der Befehl nur relativ ein­ge­schränkt nutzbar. Möchte man bei­spiels­wei­se eine Kopie erstellen und das Original an­schlie­ßend löschen, muss man zu MV (move) greifen. Auch bei diesem Befehl geben Sie das Aus­gangs­ob­jekt und den Zielpfad ein.

Etwas aus­ge­reif­ter als CP ist der DD-Befehl. Bei diesem haben Sie zu­sätz­lich die Mög­lich­keit, während des Ko­pier­vor­gangs das Format der Daten zu ändern. Dafür geht der Prozess Bit für Bit vor. Das Kommando eignet sich bei­spiels­wei­se, wenn man komplette Fest­plat­ten oder Par­ti­tio­nen kopieren möchte.

Ebenfalls in­ter­es­sant ist der Linux-Befehl PYCP. Bei diesem erhalten Sie eine grafische Fort­schritts­an­zei­ge während des Ko­pier­vor­gangs. Sie benötigen al­ler­dings Python 3.5 (oder neuer) dafür. In neueren Ubuntu-Versionen ist die Pro­gram­mier­spra­che stan­dard­mä­ßig vor­in­stal­liert.

Auch der Linux-SCP-Befehl kann hilfreich sein. Mit Secure Copy trans­fe­rie­ren Sie Daten vom lokalen Computer auf einen anderen oder umgekehrt. Dies geschieht per SSH und ist daher ein ver­schlüs­sel­ter Vorgang.

Fazit

Mit Linux-CP können Sie schnell und relativ einfach Dateien und Ordner kopieren. Durch viele Optionen lassen sich auch kom­ple­xe­re Aufgaben erledigen. Um re­gel­mä­ßi­ge Arbeiten durch­zu­füh­ren, können Sie den Befehl auch gut in Shell-Skripten un­ter­brin­gen. Auf diese Weise schreiben Sie sich bei­spiels­wei­se ein Skript für ein wö­chent­li­ches Backup.

Für den täglichen Gebrauch des Linux-Terminals sollten Sie noch weitere Befehle kennen. In­for­mie­ren Sie sich bei­spiel­wei­se über diese Kommandos, um den Workflow zu ver­ein­fa­chen:

Zum Hauptmenü