Linux cp: Optionen und Überschreiben ohne Rückfrage | yes und \ (Backslash)

cp fragt beim Kopieren mehrerer Dateien bei jeder einzelnen nach, ob sie überschrieben werden soll, und die Arbeit stockt. Der Befehl cp steht für Copy und kopiert Dateien und Verzeichnisse; dieser Beitrag zeigt die Grundlagen, die Optionen und zwei Wege, alles ohne Rückfrage zu überschreiben.
Der Befehl cp überschreibt eine gleichnamige Datei am Ziel, ohne zu fragen. Um das zu verhindern, ist [alias cp=’cp -i’] gesetzt, sodass vor dem Überschreiben eine Bestätigung kommt.
✅ Grundlegende Verwendung
Die grundlegende Syntax sieht so aus.
cp -[Optionen] <Zu kopierende Datei oder Verzeichnis> <Zielpfad oder Datei oder Verzeichnis (Pfad)>Zuerst schreibst du, was kopiert werden soll, dahinter das Ziel oder den neuen Namen.

# Datei > Datei kopieren
cp file1 file2
# Datei > in ein Verzeichnis kopieren
cp file1 dir1/
# 2 Dateien > in ein Verzeichnis kopieren
cp file1 file2 dir1/ testuser]# cp dir1/ dir2/
cp: -r not specified; omitting directory 'dir1/'
Zum Kopieren von Verzeichnissen brauchst du die Option -r oder -R oder -a.
- -r/-R : Verzeichnis samt Inhalt rekursiv kopieren
- -a : rekursiv kopieren und Attribute erhalten (enthält -r)
✅ Zwei Wege, mit cp alles zu überschreiben
Beim Ausführen von cp kommt die Frage [overwrite], weil für cp der Alias [cp -i] gesetzt ist.
cp -a
cp: overwrite 'messages_ori'? y
~]# alias cp
alias cp='cp -i'Bei ein, zwei Dateien ist das kein Problem, aber bei vielen Dateien musst du für jede einzeln antworten.
Mit den beiden Wegen unten überschreibst du dann ohne Rückfrage.
yes | cp -ar /home/ ./Beim ersten setzt du [yes |] davor; jede Rückfrage wird automatisch mit y beantwortet, und die Kopie läuft durch. Beim zweiten setzt du einen Backslash [\] vor den Befehl; dann wird der Alias übergangen und der ursprüngliche cp-Befehl ausgeführt.
\cp -ar /home/ ./✅ Optionen des cp-Befehls & Simulator
| Option | Beschreibung | |
|---|---|---|
| -a | --archiveKopiert und erhält dabei alle Rechte, Eigentümer, Gruppe, Zeitstempel usw. der Originaldatei[erhält Rechte, Eigentümer, Gruppe, Zeitstempel usw.] + [-d : den symbolischen Link selbst kopieren] + [-R : Verzeichnisse rekursiv kopieren] | |
| -b | Existiert die Zieldatei schon, wird sie vor dem Kopieren gesichert | |
| -d | Ist die Quelle ein symbolischer Link, wird der Link selbst kopiert | |
| -f | Existiert die Zieldatei, wird sie zwangsweise gelöscht und dann kopiert | |
| -i | --interactiveFragt vor dem Überschreiben beim Benutzer nachalias cp='cp -i' | |
| -l(Kleinbuchstabe) | Als Hardlink kopieren | |
| -P | Symbolische Links nicht verfolgen, sondern als Link kopieren | |
| -p | Eigentümer, Gruppe, Rechte und Zeitstempel des Originals unverändert erhalten | |
| -r, -R | Verzeichnisse rekursiv kopieren (samt Unterverzeichnissen und Dateien)Die Option -r ist kein POSIX-Standard und kann bei symbolischen Links oder Gerätedateien Probleme machen. | |
| -s | Als symbolischen Link kopieren (die Quelle muss als absoluter Pfad angegeben werden) | |
| -u | Nicht überschreiben, wenn die Zieldatei neuer oder gleich ist | |
| -v | Kopierfortschritt ausgeben (verbose)Zeigt für jede abgeschlossene Kopie eine Meldung | |
| -x | Kopiert nicht, wenn Quelle und Ziel auf verschiedenen Dateisystemen liegen. |
🔲 Option -a: Dateiattribute erhalten & Unterverzeichnisse (& Dateien) kopieren
Um Unterverzeichnisse zu kopieren und dabei die Attribute der Originaldateien zu erhalten, reicht die Option [-a] allein. Manche Skripte und Automatisierungswerkzeuge verlangen aber ausdrücklich [-r], daher setzt man [-r] oder [-R] manchmal zusätzlich.
testuser]# cp -a dir1 dir2
testuser]# ll dir*
dir1:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
dir2:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
testuser]# [-d : den symbolischen Link selbst kopieren]+[-R : Verzeichnisse rekursiv kopieren]+[--preserve=all]
| Was --preserve=all umfasst | Beschreibung |
|---|---|
| mode | Dateirechte (rwx usw.) |
| ownership | Eigentümer (user) und Gruppe (group) |
| timestamps | Zeitstempel wie die letzte Änderungszeit |
| links | Anzahl der Hardlinks (gemeinsame inode bleibt erhalten) |
| context | SELinux-Sicherheitskontext |
| xattr | Erweiterte Attribute (zusätzlich zur Datei gespeicherte Metadaten) |
| all | Kurzform, die alle obigen Punkte auf einmal umfasst |
🔲 Option -u: nur neue und geänderte Dateien kopieren
- Kopiert nur, wenn am Ziel keine gleichnamige Datei existiert oder die Quelle neuer ist
- Oft bei Backups und Synchronisation genutzt
testuser]# cp -u file1 file2
testuser]# ll file*
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:30 file2
ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.