Der Befehl rsync synchronisiert Dateien und Verzeichnisse zwischen zwei Orten. Er überträgt nur die Unterschiede zwischen Quelle und Ziel, was ihn deutlich schneller macht als einfaches Kopieren.
rsync eignet sich für Backups, das Spiegeln von Daten und die Übertragung zwischen Rechnern. Er ersetzt in vielen Fällen scp, sftp und cp.
Installation
Auf den meisten Distributionen ist rsync bereits installiert. Falls nicht, installierst du es über den Paketmanager.
Ubuntu und Debian:
sudo apt install rsync
CentOS und Fedora:
sudo yum install rsync
Syntax
rsync [OPTIONEN] QUELLE ZIEL
Für Remote-Übertragungen:
rsync [OPTIONEN] QUELLE BENUTZER@HOST:ZIEL
rsync [OPTIONEN] BENUTZER@HOST:QUELLE ZIEL
Die Bestandteile:
OPTIONEN– Flags, die das Verhalten steuernQUELLE– Die zu kopierenden Dateien oder VerzeichnisseZIEL– Der Speicherort für die KopieBENUTZER@HOST– Benutzername und Hostname für Remote-Verbindungen
Wichtige Optionen
| Option | Beschreibung |
|---|---|
-a | Archivmodus: rekursiv kopieren, Berechtigungen, Zeitstempel und Symlinks erhalten |
-v | Ausführliche Ausgabe |
-z | Daten während der Übertragung komprimieren |
-P | Fortschrittsanzeige und Wiederaufnahme bei Abbruch |
--delete | Dateien im Ziel löschen, die in der Quelle nicht mehr existieren |
-n | Probelauf ohne Änderungen |
-e | Remote-Shell angeben (Standard: SSH) |
Der Archivmodus -a ist eine Kurzform für -rlptgoD. Er deckt die meisten Anwendungsfälle ab.
Dateien lokal kopieren
Eine einzelne Datei kopieren:
rsync -av /home/user/dokument.pdf /backup/
Die Datei unter neuem Namen speichern:
rsync -av /home/user/dokument.pdf /backup/dokument-backup.pdf
Verzeichnisse synchronisieren
Ein Verzeichnis in ein anderes kopieren:
rsync -av /var/www/website/ /var/www/website-backup/
Der abschließende Schrägstrich ist entscheidend:
- Mit Schrägstrich (
/var/www/website/): Kopiert den Inhalt des Verzeichnisses - Ohne Schrägstrich (
/var/www/website): Kopiert das gesamte Verzeichnis inklusive des Ordners selbst
Beispiel ohne Schrägstrich:
rsync -av /var/www/website /backup/
Das Ergebnis ist /backup/website/... statt /backup/....
Probelauf durchführen
Bevor du Änderungen vornimmst, prüfst du mit -n, was passieren würde:
rsync -avn /quelle/ /ziel/
Die Option -n (oder --dry-run) zeigt alle geplanten Aktionen an, führt sie aber nicht aus.
Remote-Übertragung
Für die Übertragung über das Netzwerk nutzt rsync standardmäßig SSH. Auf beiden Rechnern muss rsync installiert sein.
Von lokal zu remote:
rsync -avz /home/user/daten/ benutzer@server.de:/backup/daten/
Von remote zu lokal:
rsync -avz benutzer@server.de:/var/www/ /backup/www/
Die Option -z komprimiert die Daten während der Übertragung. Das spart Bandbreite, besonders bei Textdateien.
SSH-Port angeben
Falls SSH auf einem anderen Port als 22 läuft:
rsync -avz -e "ssh -p 2222" /daten/ benutzer@server.de:/backup/
Fortschrittsanzeige bei großen Übertragungen
Mit -P siehst du den Fortschritt und kannst abgebrochene Übertragungen fortsetzen:
rsync -avP benutzer@server.de:/große-datei.tar.gz /download/
Dateien und Verzeichnisse ausschließen
Mit --exclude schließt du bestimmte Dateien oder Verzeichnisse aus:
rsync -av --exclude='*.log' --exclude='cache/' /projekt/ /backup/
Bei vielen Ausschlüssen ist eine Datei übersichtlicher. Erstelle eine Textdatei mit den Mustern:
# exclude.txt
node_modules/
*.log
.git/
tmp/
Dann nutze --exclude-from:
rsync -av --exclude-from='exclude.txt' /projekt/ /backup/
Spiegel erstellen
Mit --delete löschst du Dateien im Ziel, die in der Quelle nicht mehr existieren. So erstellst du eine exakte Kopie:
rsync -av --delete /quelle/ /ziel/
Vorsicht: Diese Option löscht Daten im Zielverzeichnis. Nutze zuerst einen Probelauf:
rsync -avn --delete /quelle/ /ziel/
Backup-Skript
Ein einfaches Backup-Skript für tägliche Sicherungen:
#!/bin/bash
rsync -av --delete \
--exclude='.cache/' \
--exclude='node_modules/' \
/home/user/ \
/media/backup/home-backup/
Speichere das Skript und mache es ausführbar:
chmod +x backup.sh
Zusammenfassung
rsync überträgt nur geänderte Daten und eignet sich damit ideal für Backups und Synchronisation. Die wichtigsten Optionen:
-afür den Archivmodus-vfür ausführliche Ausgabe-zfür Kompression bei Netzwerkübertragungen-Pfür Fortschrittsanzeige--deletefür exakte Spiegelungen-nfür Probeläufe
Weitere Details findest du in der Manpage:
man rsync