rsync ist das Schweizer Taschenmesser für Datei-Synchronisation unter Linux. Es überträgt nur Änderungen, komprimiert Daten und arbeitet über SSH. Unverzichtbar für Backups.

Was ist rsync?

rsync (remote sync) kopiert Dateien lokal oder über Netzwerk. Der Clou: Es überträgt nur die Unterschiede zwischen Quelle und Ziel. Bei einem 10 GB Backup mit 100 MB Änderungen werden nur 100 MB übertragen.

Installation

rsync ist meist vorinstalliert. Falls nicht:

apt install rsync    # Debian/Ubuntu
dnf install rsync    # CentOS/RHEL

Grundlegende Syntax

rsync [Optionen] Quelle Ziel

Die wichtigsten Optionen

| Option | Bedeutung | |--------|-----------| | -a | Archiv-Modus (rekursiv, Rechte, Zeiten erhalten) | | -v | Verbose (zeigt was passiert) | | -z | Komprimierung bei Übertragung | | -h | Human-readable (lesbare Größen) | | -P | Fortschritt + Resume bei Abbruch | | --delete | Gelöschte Dateien auch im Ziel löschen | | -n | Dry-run (nur simulieren) |

Lokale Synchronisation

Verzeichnis kopieren

rsync -av /quelle/ /ziel/

Wichtig: Der Schrägstrich nach der Quelle ist entscheidend!

  • rsync -av /quelle/ /ziel/ → Kopiert Inhalt von /quelle nach /ziel
  • rsync -av /quelle /ziel/ → Kopiert Ordner /quelle nach /ziel/quelle

Mit Fortschrittsanzeige

rsync -avhP /quelle/ /ziel/

Gelöschte Dateien synchronisieren

rsync -av --delete /quelle/ /ziel/

Vorsicht: Löscht Dateien im Ziel, die in der Quelle nicht mehr existieren!

Synchronisation über SSH

Auf Remote-Server kopieren

rsync -avz /lokales/verzeichnis/ user@server:/remote/verzeichnis/

Von Remote-Server holen

rsync -avz user@server:/remote/verzeichnis/ /lokales/verzeichnis/

Mit anderem SSH-Port

rsync -avz -e "ssh -p 2222" /quelle/ user@server:/ziel/

Mit SSH-Key

rsync -avz -e "ssh -i /pfad/zum/key" /quelle/ user@server:/ziel/

Dateien ausschließen

Einzelne Dateien/Ordner

rsync -av --exclude='*.log' --exclude='cache/' /quelle/ /ziel/

Aus Datei

Erstellen Sie eine Datei exclude.txt:

*.log
*.tmp
cache/
node_modules/
.git/

Dann:

rsync -av --exclude-from='exclude.txt' /quelle/ /ziel/

Praktische Backup-Beispiele

Einfaches Verzeichnis-Backup

rsync -avh --delete /var/www/ /backup/www/

Tägliches Backup auf Remote-Server

rsync -avz --delete /var/www/ backup@server:/backup/www/

Website-Backup mit Ausnahmen

rsync -avz --delete \
    --exclude='wp-content/cache/' \
    --exclude='*.log' \
    /var/www/wordpress/ /backup/wordpress/

Datenbank + Dateien sichern

#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR=/backup/$DATE

mkdir -p $BACKUP_DIR

# Datenbank
mysqldump -u root -p'password' --all-databases > $BACKUP_DIR/db.sql

# Dateien
rsync -av --delete /var/www/ $BACKUP_DIR/www/
rsync -av /etc/ $BACKUP_DIR/etc/

# Alte Backups löschen (älter als 7 Tage)
find /backup -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;

rsync kann mit Hardlinks platzsparende inkrementelle Backups erstellen:

rsync -av --delete --link-dest=/backup/latest /var/www/ /backup/$(date +%Y%m%d)/
ln -snf /backup/$(date +%Y%m%d) /backup/latest

So werden nur geänderte Dateien neu gespeichert, unveränderte Dateien verweisen auf das vorherige Backup.

Bandbreite begrenzen

rsync -avz --bwlimit=5000 /quelle/ user@server:/ziel/
# 5000 KB/s = ~5 MB/s

Trockenlauf (Dry Run)

Bevor Sie --delete verwenden, testen Sie:

rsync -avn --delete /quelle/ /ziel/

-n zeigt, was passieren würde, ohne Änderungen durchzuführen.

Zwei-Wege-Synchronisation

rsync ist für Ein-Weg-Sync gedacht. Für Zwei-Wege:

1. Unison: Alternative zu rsync für bidirektionale Sync 2. Syncthing: Kontinuierliche Sync zwischen Geräten

Automatisierung mit Cron

Tägliches Backup um 3 Uhr:

crontab -e
0 3 * * * rsync -avz --delete /var/www/ /backup/www/ >> /var/log/backup.log 2>&1

Häufige Fehler

"Permission denied"

rsync -avz --rsync-path="sudo rsync" user@server:/etc/ /backup/etc/

Verbindung bricht ab

Mit -P können Sie fortsetzen:

rsync -avzP /quelle/ user@server:/ziel/
rsync -avL /quelle/ /ziel/  # -L folgt Symlinks
# oder
rsync -av /quelle/ /ziel/   # -a kopiert Symlinks als Symlinks

rsync vs. Alternativen

| Tool | Vorteile | Nachteile | |------|----------|-----------| | rsync | Schnell, überall verfügbar | Nur Ein-Weg | | scp | Einfach | Keine Delta-Sync | | rclone | Cloud-Support | Komplexer | | Restic | Verschlüsselung, Dedupe | Mehr Overhead |

Fazit

rsync ist unverzichtbar für Linux-Administration. Die Standardkombination -avz deckt die meisten Fälle ab. Für Backups fügen Sie --delete hinzu (nach Dry-Run-Test!). Kombiniert mit Cron haben Sie ein solides automatisches Backup-System.