Files
it-know-how/Linux/BASH Basics/rsync.md
T

4.6 KiB

rsync - Dateien synchronisieren

Der rsync-Befehl synchronisiert Dateien und Verzeichnisse effizient zwischen verschiedenen Orten (lokal oder über Netzwerk).

Grundsyntax

rsync [OPTIONEN] QUELLE ZIEL

Grundlegende Optionen

Die häufigste Kombination:

rsync -av quelle/ ziel/
  • -a = archive (behält Rechte, Zeitstempel, Symlinks)
  • -v = verbose (zeigt Details)

Lokale Synchronisation

Verzeichnis synchronisieren

rsync -av /quelle/verzeichnis/ /ziel/verzeichnis/

Wichtig: Trailing Slash / macht einen Unterschied!

rsync -av quelle/ ziel/     # Inhalt von quelle/ nach ziel/
rsync -av quelle ziel/      # quelle/ als Unterordner in ziel/quelle/

Über Netzwerk (SSH)

Zu Remote-Server

rsync -av /lokaler/pfad/ user@server:/remote/pfad/

Von Remote-Server

rsync -av user@server:/remote/pfad/ /lokaler/pfad/

Anderen SSH-Port

rsync -av -e "ssh -p 2222" /lokal/ user@server:/remote/

Wichtige Optionen

Fortschritt anzeigen

rsync -av --progress quelle/ ziel/

Dry-run (simulieren)

rsync -avn quelle/ ziel/
  • -n = dry-run (nichts ändern, nur anzeigen)

Dateien löschen im Ziel

rsync -av --delete quelle/ ziel/

Löscht Dateien im Ziel, die in der Quelle nicht existieren.

Kompression (für Netzwerk)

rsync -avz quelle/ user@server:/remote/
  • -z = compress (während Übertragung)

Teilweise übertragene Dateien behalten

rsync -av --partial quelle/ ziel/

Nützlich bei unterbrochenen Übertragungen.

Bandbreite begrenzen

rsync -av --bwlimit=1000 quelle/ ziel/

Begrenzt auf 1000 KB/s.

Dateien ausschließen

Einzelne Muster

rsync -av --exclude='*.tmp' --exclude='.git' quelle/ ziel/

Aus Datei

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

exclude.txt:

*.tmp
*.log
.git/
node_modules/

Nur bestimmte Dateien

rsync -av --include='*.pdf' --exclude='*' quelle/ ziel/

Praktische Beispiele

Backup erstellen

rsync -av --delete /home/user/dokumente/ /backup/dokumente/

Backup mit Zeitstempel

rsync -av /quelle/ /backup/backup-$(date +%Y%m%d)/

Nur geänderte Dateien kopieren

rsync -av --update quelle/ ziel/

Überschreibt nur, wenn Quelle neuer ist.

Große Dateien übertragen

rsync -av --progress --partial-dir=.rsync-partial quelle/ ziel/

Backup auf NAS

rsync -av --delete /home/user/ user@nas:/backup/user/

Website hochladen

rsync -avz --delete website/ user@webserver:/var/www/html/

Mit Ausschlüssen

rsync -av --delete \
  --exclude='node_modules' \
  --exclude='.git' \
  --exclude='*.log' \
  projekt/ /backup/projekt/

Inkrementelles Backup

#!/bin/bash
CURRENT=/backup/current
TIMESTAMP=$(date +%Y%m%d-%H%M%S)

rsync -av --delete --link-dest=$CURRENT /quelle/ /backup/$TIMESTAMP/
rm -f $CURRENT
ln -s $TIMESTAMP $CURRENT

Erstellt platzsparende Backups durch Hardlinks.

Rechte und Eigentümer

Rechte bewahren

rsync -av quelle/ ziel/  # Standard mit -a

Als Root mit Original-Eigentümer

sudo rsync -av quelle/ ziel/

Nur als aktueller User

rsync -rlptv quelle/ ziel/

Ohne -o und -g (Owner und Group).

Fehler vermeiden

Dry-run erst testen

rsync -avn --delete quelle/ ziel/

Prüfe die Ausgabe, bevor du wirklich synchronisierst!

Slash bei Quelle beachten

rsync -av quelle/ ziel/   # Inhalt synchronisieren
rsync -av quelle ziel/    # Ordner synchronisieren

Mit --delete vorsichtig sein

# FALSCH - löscht alles im Ziel!
rsync -av --delete /leerer/ordner/ /wichtig/

# RICHTIG - erst prüfen
rsync -avn --delete quelle/ ziel/

Vergleich mit anderen Tools

Tool Geschwindigkeit Delta-Transfer Netzwerk Verschlüsselung
rsync Schnell Ja SSH Via SSH
scp Mittel Nein SSH Ja
cp Sehr schnell Nein Nein Nein
tar Mittel Nein Pipe möglich Optional

Monitoring

Fortschritt detailliert

rsync -av --progress --stats quelle/ ziel/

Nur Zusammenfassung

rsync -av --stats quelle/ ziel/

Siehe auch

  • tar - Archive erstellen
  • find - Dateien für Backup finden
  • Symlinks - Links bleiben mit -a erhalten
  • Dateiberechtigungen - Rechte und Eigentümer nach rsync
  • ls - Übertragene Dateien anzeigen