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 steuern
  • QUELLE – Die zu kopierenden Dateien oder Verzeichnisse
  • ZIEL – Der Speicherort für die Kopie
  • BENUTZER@HOST – Benutzername und Hostname für Remote-Verbindungen

Wichtige Optionen

OptionBeschreibung
-aArchivmodus: rekursiv kopieren, Berechtigungen, Zeitstempel und Symlinks erhalten
-vAusführliche Ausgabe
-zDaten während der Übertragung komprimieren
-PFortschrittsanzeige und Wiederaufnahme bei Abbruch
--deleteDateien im Ziel löschen, die in der Quelle nicht mehr existieren
-nProbelauf ohne Änderungen
-eRemote-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:

  • -a für den Archivmodus
  • -v für ausführliche Ausgabe
  • -z für Kompression bei Netzwerkübertragungen
  • -P für Fortschrittsanzeige
  • --delete für exakte Spiegelungen
  • -n für Probeläufe

Weitere Details findest du in der Manpage:

man rsync

Verwandte Artikel