Rsync Dateien Synchronisieren
Rsync: Dateien effizient synchronisieren
Rsync ist das Standard-Tool für Datei-Synchronisation unter Linux. Es überträgt nur geänderte Teile von Dateien, spart Bandbreite und ist ideal für Backups.
Installation
# Meist vorinstalliert
sudo apt install rsync -y
Grundlegende Syntax
rsync [Optionen] Quelle Ziel
Lokale Synchronisation
# Verzeichnis kopieren
rsync -av /home/user/dokumente/ /backup/dokumente/
# Mit Fortschritt
rsync -av --progress /quelle/ /ziel/
# Trockenlauf (zeigt was passieren würde)
rsync -av --dry-run /quelle/ /ziel/
⚠️ Wichtig: Trailing Slash beachten!
/quelle/= Inhalt von quelle/quelle= Ordner quelle selbst
Wichtige Optionen
| Option | Bedeutung |
|---|---|
-a |
Archiv-Modus (rekursiv, Rechte, etc.) |
-v |
Verbose (Details anzeigen) |
-z |
Komprimierung |
-P |
Fortschritt + Partial (fortsetzbar) |
--delete |
Gelöschte Dateien auch im Ziel löschen |
-n |
Dry-Run (nur simulieren) |
-h |
Human-readable Größen |
Remote-Synchronisation (SSH)
# Zu Remote-Server
rsync -avz /lokales/verzeichnis/ user@server:/remote/verzeichnis/
# Von Remote-Server
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 ~/.ssh/id_rsa" /quelle/ user@server:/ziel/
Backup-Beispiele
# Einfaches Backup
rsync -avh --progress /home/ /backup/home/
# Mirror (exakte Kopie, löscht im Ziel)
rsync -avh --delete /var/www/ /backup/www/
# Mit Ausschlüssen
rsync -avh --exclude='*.log' --exclude='cache/' /var/www/ /backup/
# Ausschluss-Datei
rsync -avh --exclude-from='exclude.txt' /quelle/ /ziel/
exclude.txt Beispiel
*.log
*.tmp
node_modules/
.git/
cache/
Inkrementelle Backups
#!/bin/bash
# Inkrementelles Backup mit Hardlinks
DATUM=$(date +%Y-%m-%d)
QUELLE="/var/www/"
BACKUP="/backup"
LATEST="$BACKUP/latest"
ZIEL="$BACKUP/$DATUM"
rsync -avh --delete \
--link-dest="$LATEST" \
"$QUELLE" "$ZIEL"
# Symlink aktualisieren
rm -f "$LATEST"
ln -s "$ZIEL" "$LATEST"
Zwei Server synchronisieren
# Cronjob auf Server A
*/15 * * * * rsync -avz --delete /var/www/ user@serverB:/var/www/
Bandbreite begrenzen
# Limit auf 1 MB/s
rsync -avz --bwlimit=1000 /quelle/ user@server:/ziel/
Checksummen prüfen
# Prüft Dateien per Checksum statt Größe/Zeit
rsync -avc /quelle/ /ziel/
Praktisches Backup-Script
#!/bin/bash
BACKUP_SERVER="user@backup-server"
BACKUP_DIR="/backup/$(hostname)"
rsync -avzh --delete \
--exclude-from=/etc/rsync-exclude.txt \
-e "ssh -i /root/.ssh/backup_key" \
/home /etc /var/www \
"$BACKUP_SERVER:$BACKUP_DIR/"
echo "Backup abgeschlossen: $(date)"
Weitere Hilfe
- 📖
man rsync - 📧 E-Mail: support@enjyn.de