276 lines
4.7 KiB
Markdown
276 lines
4.7 KiB
Markdown
# 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
|