Es gibt zwei Hauptwerkzeuge zum Kopieren: cp für einzelne Dateien und rsync für Verzeichnisse und Synchronisation. Beide Befehle setzen Leserechte auf der Quelle und Schreibrechte am Ziel voraus.
Dateien kopieren mit cp
Der cp-Befehl kopiert Dateien von einem Ort zum anderen. Die Syntax ist einfach:
cp QUELLE ZIEL
Eine Datei duplizieren
Um eine Datei im selben Verzeichnis zu kopieren:
cp bericht.txt bericht_backup.txt
Eine Datei in ein anderes Verzeichnis kopieren
Gib als Ziel den Pfad zum Verzeichnis an:
cp bericht.txt /home/benutzer/backup/
Die Datei behält ihren Namen. Für einen neuen Namen gibst du diesen mit an:
cp bericht.txt /home/benutzer/backup/bericht_alt.txt
Mehrere Dateien kopieren
Gib mehrere Quelldateien an, gefolgt vom Zielverzeichnis:
cp datei1.txt datei2.txt datei3.txt /backup/
Wildcards funktionieren ebenfalls:
cp *.log /var/backup/
Überschreiben kontrollieren
Standardmäßig überschreibt cp existierende Dateien ohne Rückfrage. Mit -i fragt er vorher nach:
cp -i wichtig.txt /backup/wichtig.txt
Dateiattribute erhalten
Die Option -p behält Zeitstempel, Eigentümer und Berechtigungen bei:
cp -p config.conf /etc/backup/config.conf
Kopiervorgang anzeigen
Mit -v siehst du, was kopiert wird:
cp -v *.txt /backup/
Verzeichnisse kopieren mit cp
Für Verzeichnisse brauchst du die Option -r (rekursiv):
cp -r projekt/ projekt_backup/
Ohne -r verweigert cp das Kopieren von Verzeichnissen.
Verhalten bei existierendem Zielverzeichnis
Existiert das Zielverzeichnis bereits, kopiert cp das Quellverzeichnis hinein:
cp -r fotos/ backup/
Das Ergebnis ist backup/fotos/ mit allen Inhalten.
Nur den Inhalt kopieren
Mit -T kopierst du den Inhalt direkt ins Ziel, ohne ein Unterverzeichnis zu erstellen:
cp -rT fotos/ backup/
Jetzt landen alle Dateien direkt in backup/.
Verzeichnisse kopieren mit rsync
rsync ist schneller und flexibler als cp, besonders bei großen Verzeichnissen. Es kopiert nur geänderte Dateien und zeigt den Fortschritt an.
Die wichtigste Option ist -a (Archivmodus). Sie kopiert rekursiv und erhält alle Attribute:
rsync -a quelle/ ziel/
Der abschließende Schrägstrich
Bei rsync ist der Schrägstrich am Ende entscheidend:
rsync -a fotos/ backup/
Kopiert den Inhalt von fotos/ nach backup/.
rsync -a fotos backup/
Kopiert das gesamte Verzeichnis fotos nach backup/, ergibt backup/fotos/.
Fortschritt anzeigen
Mit -v (verbose) und --progress siehst du den Kopiervorgang:
rsync -av --progress /var/www/ /backup/www/
Nur neuere Dateien kopieren
rsync kopiert standardmäßig nur geänderte Dateien. Das macht wiederholte Backups schnell:
rsync -av ~/dokumente/ /backup/dokumente/
Beim zweiten Durchlauf werden nur neue oder geänderte Dateien übertragen.
Praktische Beispiele
Backup einer Konfigurationsdatei
cp -p /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
Projektverzeichnis archivieren
cp -rv projekt/ /mnt/archiv/projekt_$(date +%Y%m%d)/
Großes Verzeichnis mit Fortschrittsanzeige kopieren
rsync -av --progress /home/benutzer/fotos/ /mnt/extern/fotos/
Verzeichnisse synchronisieren
rsync -av --delete quelle/ ziel/
Die Option --delete entfernt Dateien im Ziel, die in der Quelle nicht mehr existieren.
Vorsicht: Verwende --delete nur, wenn du sicher bist, dass das Ziel ein Backup der Quelle ist.
Zusammenfassung
Für einzelne Dateien genügt cp. Bei Verzeichnissen ist cp -r oder rsync -a die Wahl. rsync bietet Vorteile bei großen Datenmengen und wiederholten Backups, da es nur Änderungen überträgt.
| Aufgabe | Befehl |
|---|---|
| Datei kopieren | cp quelle.txt ziel.txt |
| Verzeichnis kopieren | cp -r quelle/ ziel/ |
| Mit Attributen kopieren | cp -p oder rsync -a |
| Nur geänderte Dateien | rsync -a quelle/ ziel/ |