merging and cleaning up

This commit is contained in:
Mathias Schneider
2026-03-27 13:14:52 +01:00
parent 4eb84a28af
commit 82d7e0e888
62 changed files with 6 additions and 386 deletions
+275
View File
@@ -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