Der Befehl cp kopiert Dateien und Verzeichnisse. Er gehört zu den grundlegenden Werkzeugen für die Dateiverwaltung auf der Kommandozeile.
Syntax des cp-Befehls
Die allgemeine Syntax lautet:
cp [OPTIONEN] QUELLE ZIEL
QUELLE- Eine oder mehrere Dateien oder Verzeichnisse, die kopiert werden sollen.ZIEL- Der Zielort für die Kopie (Datei oder Verzeichnis).
Zum Kopieren benötigst du Leserechte für die Quelle und Schreibrechte für das Ziel. Fehlen diese Rechte, erscheint die Meldung “Permission denied”.
Dateien kopieren
Eine Datei im selben Verzeichnis kopieren
Um eine Datei im aktuellen Verzeichnis zu duplizieren, gibst du Quelle und Ziel an:
cp dokument.txt dokument_backup.txt
Die geschweiften Klammern bieten eine Kurzschreibweise für solche Fälle:
cp dokument{,_backup}.txt
Dieser Befehl erzeugt das gleiche Ergebnis wie der vorherige.
Eine Datei in ein anderes Verzeichnis kopieren
Gib als Ziel den Pfad zum gewünschten Verzeichnis an:
cp dokument.txt /home/benutzer/backup/
Die Datei behält ihren ursprünglichen Namen. Soll sie einen neuen Namen erhalten, gib diesen mit an:
cp dokument.txt /home/benutzer/backup/dokument_alt.txt
Wichtige Optionen
Überschreiben kontrollieren
Standardmäßig überschreibt cp eine bestehende Zieldatei ohne Rückfrage. Mehrere Optionen ändern dieses Verhalten:
| Option | Wirkung |
|---|---|
-i | Fragt vor dem Überschreiben nach Bestätigung |
-n | Überschreibt niemals bestehende Dateien |
-u | Kopiert nur, wenn die Quelle neuer ist als das Ziel |
cp -i wichtig.txt /backup/wichtig.txt
Bei diesem Befehl erscheint eine Abfrage, falls die Zieldatei bereits existiert.
Dateiattribute erhalten
Die Option -p bewahrt Dateimodus, Eigentümer und Zeitstempel:
cp -p config.conf /etc/backup/config.conf
Das ist nützlich bei Konfigurationsdateien oder wenn die Metadaten wichtig sind.
Fortschritt anzeigen
Mit -v (verbose) zeigt cp jeden Kopiervorgang an:
cp -v *.log /var/backup/
Die Ausgabe sieht dann so aus:
'access.log' -> '/var/backup/access.log'
'error.log' -> '/var/backup/error.log'
Verzeichnisse kopieren
Für Verzeichnisse ist die Option -r (rekursiv) erforderlich. Ohne sie verweigert cp das Kopieren von Verzeichnissen.
cp -r projekt/ projekt_backup/
Dieser Befehl kopiert das gesamte Verzeichnis projekt mit allen Unterverzeichnissen und Dateien.
Zielverzeichnis existiert bereits
Wenn das Zielverzeichnis bereits existiert, kopiert cp das Quellverzeichnis hinein:
cp -r fotos/ backup/
Das Ergebnis ist backup/fotos/ mit allen Inhalten.
Nur den Inhalt kopieren
Die Option -T behandelt das Ziel als reguläre Datei, nicht als Verzeichnis. So kopierst du nur den Inhalt:
cp -rT fotos/ backup/
Jetzt landen die Dateien direkt in backup/, ohne das zusätzliche Unterverzeichnis fotos.
Eine Alternative ist das Glob-Muster *:
cp -r fotos/* backup/
Hinweis: Das Sternchen erfasst keine versteckten Dateien (die mit . beginnen).
Mehrere Dateien kopieren
Gib mehrere Quellen an, gefolgt vom Zielverzeichnis:
cp datei1.txt datei2.txt datei3.txt /backup/
Bei mehreren Quellen muss das Ziel ein Verzeichnis sein.
Häufige Anwendungsfälle
Backup einer Konfigurationsdatei vor Änderungen
cp -p /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
Projektordner archivieren
cp -rv projekt/ /mnt/archiv/projekt_$(date +%Y%m%d)/
Die Option -v zeigt den Fortschritt, das Datumsformat erzeugt einen eindeutigen Ordnernamen.
Dateien synchronisieren (nur neuere)
cp -ruv ~/dokumente/ /backup/dokumente/
Mit -u werden nur geänderte Dateien kopiert, was bei großen Verzeichnissen Zeit spart.
Zusammenfassung
Der cp-Befehl kopiert Dateien und Verzeichnisse. Für Verzeichnisse ist -r erforderlich. Mit -i fragst du vor dem Überschreiben nach, mit -p behältst du Dateiattribute. Weitere Optionen findest du in der Manpage mit man cp.
Für Kopien über das Netzwerk eignen sich scp oder rsync.