cp
Das cp
Tool in Linux wird zum Kopieren von Dateien und Verzeichnissen verwendet. Es gehört zu den grundlegenden Tools, die in nahezu jeder Linux-Distribution verfügbar sind. Die Funktionalität von cp
ist umfangreich und bietet eine Vielzahl von Optionen, um das Kopieren flexibel und effizient zu gestalten.
Syntax
cp [OPTION] [-T] QUELLE ZIEL
cp [OPTION] QUELLE VERZEICHNIS
cp [OPTION] -t VERZEICHNIS QUELLE
-a, --archive
Kopiert Dateien und Verzeichnisse rekursiv und bewahrt dabei alle Attribute (entspricht -dpR --preserve=all
)
--attributes-only
Kopiert nur die Datei-Attribute, nicht den Datei-Inhalt
--backup[=CONTROL]
Erstellt eine Sicherung vorhandener Ziel-Dateien. -b
funktioniert ähnlich, akzeptiert jedoch kein Argument.
--copy-contents
Kopiert den Inhalt von Spezial-Dateien, wenn rekursiv kopiert wird.
-d
Verhält sich wie --no-dereference
--preserve=links
, d.h. symbolische Links werden dereferenziert, sonder als Links kopiert.
--debug
Zeigt detailliert an, wie die Dateien kopiert werden, und impliziert -v
(verbose).
-f, --force
Erzwingt das Kopiere, indem vorhandene Ziel-Dateien gelöscht werden, falls sie nicht geöffnet werden können (ignoriert bei -n
).
-i, --interactive
Fragt nach, bevor vorhandene Dateien überschrieben werden (überstimmt -n
).
-H
Folgt symbolischen Links, die als Quelle auf der Kommandozeile angegeben sind.
-l, --link
Erstellt Hardlinks anstelle von Kopien.
-L, --dereference
Folgt immer symbolischen Links in der Quelle.
-n, --no-clobber
Überschreibt keine vorhandenen Dateien und schlägt nicht fehl (überstimmt -u
oder -i
).
-P, --no-dereference
Folgt niemals symbolischen Links in der Quelle.
-p
Bewahrt Datei-Attribute wie Modus, Eigentümer und Zeitstempel (gleichbedeutend mit --preserve=mode
, ownership
, timestamps
).
--preserve[=ATTR_LIST]
Bewahrt die angegebenen Datei-Attribute.
--no-preserve=ATTR_LIST
Bewahrt die angegebenen Attribute nicht.
--parents
Behält den gesamten Quellpfad bei und hängt ihn an das Zielverzeichnis an.
-R, -r, --recursive
Kopiert Verzeichnisse rekursiv.
--reflink[=WHEN]
Steuert das Erstellen von Copy-on-Write (CoW) Kopien.
--remove-destination
Löscht vorhandene Ziel-Dateien vor dem Kopieren, anders als --force
.
--sparse=WHEN
Steuer das Erstellen von „sparse“ Dateien (Dateien mit Löchern).
--strip-trailing-slashes
Entfernt abschließende Schrägstriche aus den Quell-Argumenten.
-s, --symbolic-link
Erstelle symbolische Links anstatt Dateien zu kopieren.
-S, --suffix=SUFFIX
Ändert die Standard-Dateiendung von Sicherungsdateien.
-t, --target-directory=DIRECTORY
Kopiert alle Quell-Argumente in das angegebene Zielverzeichnis.
-T, --no-target-directory
Behandelt das Ziel als normale Datei, nicht als Verzeichnis.
--update[=UDPATE]
Aktualisiert nur vorhandene Dateien. UPDATE
kann all
, none
oder older
sein.
-u
Gleichbedeutend mit --update=older
.
-v, --verbose
Zeigt an, was der Befehl gerade tut.
-x, --one-file-system
Bleibt innerhalb des aktuellen Dateisystems.
-Z
Setzt den SELinux-Sicherheitskontext der Zieldatei auf den Standardtyp.
--context[=CTX]
Wie -Z
, aber erlaubt es, den Sicherheitskontext auf CTX
zu setzen.
--help
Zeigt die Hilfe an und beendet das Programm.
--version
Zeigt Versionsinformationen und beendet das Programm.
Verwendung
Einfaches Kopieren einer Datei
Wenn man eine Datei von einem Ort an einen anderen kopieren möchte, kann man dies wie folgt tun.
cp ./datei.txt /home/users/documents/
Die Datei datei.txt
wird in das Verzeichnis /home/user/documents/
kopiert. Wenn die Datei bereits existiert, wird sie überschrieben.
Kopieren mehrerer Dateien
Mehrere Dateien können in ein Verzeichnis kopiert werden, indem man die Dateinamen hintereinander angibt.
cd datei1.txt datei2.txt /home/user/backup
Die Dateien datei1.txt
und datei2.txt
werden in das Verzeichnis /home/user/backup/
kopiert.
Rekursives Kopieren
Um ein gesamtes Verzeichnis samt Inhalt zu kopieren, muss die Option -r
(rekursiv) verwendet werden.
cp -r /home/user/documents/ /home/user/backup/
Das gesamte Verzeichnis documents inklusive aller Unterverzeichnisse und Dateien wird in das Verzeichnis /home/user/backup/
kopiert.
Datei-Attribute beibehalten
Wenn man möchte, dass die Datei-Attribute (wie Zugriffsrechte, Eigentümer und Zeitstempel) beim Kopieren erhalten bleiben, kann man die Option -p
verwenden.
cp -p bericht.txt /home/user/documents/
Die Datei bericht.txt
wird in das Verzeichnis /home/user/documents/
kopiert und ihre ursprünglichen Zugriffsrechte, der Eigentümer und die Zeitstempel bleiben erhalten.
Interaktives Kopieren
Um sicherzustellen, dass man gefragt wird, bevor eine existierende Datei überschrieben wird, kann man die Option -i
(interaktiv) verwenden.
cp -i bericht.txt /home/user/backup/
cp: overwrite '/home/user/backup/bericht.txt'? (yes/no)
Falls bericht.txt
bereits im Verzeichnis /home/user/backup/
existiert, wird eine Aufforderung angezeigt, bevor die Datei überschrieben wird.
Kopieren nur neuer oder geänderter Dateien
Um nur Dateien zu kopieren, die entweder neu sind oder neuer als die im Zielverzeichnis befindlichen, kann die Option -u
verwendet werden.
cp -u bericht.txt /home/user/backup/
Die Datei bericht.txt
wird nur dann in das Zielverzeichnis kopiert, wenn sie entweder dort nicht existiert oder die Datei im Quellverzeichnis neuer ist als die im Zielverzeichnis.
Symbolische Links statt Dateien kopieren
Wenn man symbolische Links kopieren möchte, ohne die Dateien auf die sie zeigen zu kopieren, kann man die Option -P
verwenden.
cp -P verknuepfung /home/user/backup/
Der symbolische Link verknuepfung
wird in das Verzeichnis /home/user/backup/
kopiert, ohne dass die Datei, auf die der Link zeigt, kopiert wird.