# rsync - Dateien synchronisieren Der `rsync`-Befehl synchronisiert Dateien und Verzeichnisse effizient zwischen verschiedenen Orten (lokal oder über Netzwerk). ## Grundsyntax ```bash rsync [OPTIONEN] QUELLE ZIEL ``` ## Grundlegende Optionen Die häufigste Kombination: ```bash rsync -av quelle/ ziel/ ``` - `-a` = archive (behält Rechte, Zeitstempel, Symlinks) - `-v` = verbose (zeigt Details) ## Lokale Synchronisation ### Verzeichnis synchronisieren ```bash rsync -av /quelle/verzeichnis/ /ziel/verzeichnis/ ``` **Wichtig:** Trailing Slash `/` macht einen Unterschied! ```bash 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 ```bash rsync -av /lokaler/pfad/ user@server:/remote/pfad/ ``` ### Von Remote-Server ```bash rsync -av user@server:/remote/pfad/ /lokaler/pfad/ ``` ### Anderen SSH-Port ```bash rsync -av -e "ssh -p 2222" /lokal/ user@server:/remote/ ``` ## Wichtige Optionen ### Fortschritt anzeigen ```bash rsync -av --progress quelle/ ziel/ ``` ### Dry-run (simulieren) ```bash rsync -avn quelle/ ziel/ ``` - `-n` = dry-run (nichts ändern, nur anzeigen) ### Dateien löschen im Ziel ```bash rsync -av --delete quelle/ ziel/ ``` Löscht Dateien im Ziel, die in der Quelle nicht existieren. ### Kompression (für Netzwerk) ```bash rsync -avz quelle/ user@server:/remote/ ``` - `-z` = compress (während Übertragung) ### Teilweise übertragene Dateien behalten ```bash rsync -av --partial quelle/ ziel/ ``` Nützlich bei unterbrochenen Übertragungen. ### Bandbreite begrenzen ```bash rsync -av --bwlimit=1000 quelle/ ziel/ ``` Begrenzt auf 1000 KB/s. ## Dateien ausschließen ### Einzelne Muster ```bash rsync -av --exclude='*.tmp' --exclude='.git' quelle/ ziel/ ``` ### Aus Datei ```bash rsync -av --exclude-from=exclude.txt quelle/ ziel/ ``` **exclude.txt:** ``` *.tmp *.log .git/ node_modules/ ``` ### Nur bestimmte Dateien ```bash rsync -av --include='*.pdf' --exclude='*' quelle/ ziel/ ``` ## Praktische Beispiele ### Backup erstellen ```bash rsync -av --delete /home/user/dokumente/ /backup/dokumente/ ``` ### Backup mit Zeitstempel ```bash rsync -av /quelle/ /backup/backup-$(date +%Y%m%d)/ ``` ### Nur geänderte Dateien kopieren ```bash rsync -av --update quelle/ ziel/ ``` Überschreibt nur, wenn Quelle neuer ist. ### Große Dateien übertragen ```bash rsync -av --progress --partial-dir=.rsync-partial quelle/ ziel/ ``` ### Backup auf NAS ```bash rsync -av --delete /home/user/ user@nas:/backup/user/ ``` ### Website hochladen ```bash rsync -avz --delete website/ user@webserver:/var/www/html/ ``` ### Mit Ausschlüssen ```bash rsync -av --delete \ --exclude='node_modules' \ --exclude='.git' \ --exclude='*.log' \ projekt/ /backup/projekt/ ``` ## Inkrementelles Backup ```bash #!/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 ```bash rsync -av quelle/ ziel/ # Standard mit -a ``` ### Als Root mit Original-Eigentümer ```bash sudo rsync -av quelle/ ziel/ ``` ### Nur als aktueller User ```bash rsync -rlptv quelle/ ziel/ ``` Ohne `-o` und `-g` (Owner und Group). ## Fehler vermeiden ### Dry-run erst testen ```bash rsync -avn --delete quelle/ ziel/ ``` Prüfe die Ausgabe, bevor du wirklich synchronisierst! ### Slash bei Quelle beachten ```bash rsync -av quelle/ ziel/ # Inhalt synchronisieren rsync -av quelle ziel/ # Ordner synchronisieren ``` ### Mit --delete vorsichtig sein ```bash # 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 ```bash rsync -av --progress --stats quelle/ ziel/ ``` ### Nur Zusammenfassung ```bash rsync -av --stats quelle/ ziel/ ``` ## Siehe auch - [[IT-Know-How/Linux/BASH Basics/tar]] - Archive erstellen - [[IT-Know-How/Linux/BASH Basics/find]] - Dateien für Backup finden - [[IT-Know-How/Linux/BASH Basics/Symlinks]] - Links bleiben mit -a erhalten - [[IT-Know-How/Linux/BASH Basics/Dateiberechtigungen]] - Rechte und Eigentümer nach rsync - [[IT-Know-How/Linux/BASH Basics/ls]] - Übertragene Dateien anzeigen