merging and cleaning up
This commit is contained in:
@@ -0,0 +1,275 @@
|
||||
# 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
|
||||
|
||||
- [[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
|
||||
Reference in New Issue
Block a user