Show pageBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== rsync ====== siehe auch: [[:admin:backup:rsnapshot]] ===== Verzeichnisangaben ===== Bei Verzeichnissen kopiert rsync mit einem angehängten Slash beim Quellverzeichnis den Inhalt des Verzeichnisses und ohne erstellt es das Verzeichnis neu. Beim Zielverzeichnis ist es egal. Beispiele: ^ Source ^ Destination ^ Ordnerstruktur | | ./files/dir1/ | /backup/dir1 | /backup/dir1 | | ./files/dir1 | /backup/dir1\\ /backup/dir1/ | /backup/dir1/dir1 | | ./files/dir1/ | /backup/dir1 | /backup/dir1 | ===== Kommandozeilenoptionen ===== ^ Switch ^ Beschreibung | | **-a** | archive mode (kurz für **-rlptgoD**) | | -r, --recursive | steigt rekursiv in die angegebenen Verzeichnisse ab | | -l, --links | kopiert Symlinks als Symlinks | | -p, --perms | behält Rechte bei | | -t, --times | behält Änderungszeitpunkt bei | | -g, --group | behält Gruppeneigentum bei | | -o, --owner | behält Eigentümer bei | | -D, --devices --specials | behält Geräte- (nur su!) und Spezialdateien bei | | || | ** -n**, --dry-run | Testlauf | | **-b**, --backup | Backups überschriebener/gelöschter Dateien anlegen | | --backup-dir=$dir | speichert Sicherungsdateien in angegebenem Ordner | | --backup-dir=$(date +%F) | Backups in ./yyyy-mm-dd/ | | **--delete** | sollte nur zusammen mit -b verwendet werden!\\ löscht Dateien im Zielverzeichnis, wenn sie im Quellverzeichnis nicht vorhanden sind | | || | **--max-size=2G** | verhindert Übertragung von Dateien größer als 2GiB | | **--min-size=256** | überträgt keine Dateien <256 Bytes | | || | **-q**, --quiet | unterdrückt Ausgaben (z.B. für [[cron]]) | | **-z**, --compress | Dateien beim Transfer komprimieren | | **--progress** | zeigt Einzelfortschritt an | | **--info=progress2** | zeigt Gesamtfortschritt an (erst ab v3.1) | | **-e "ssh -p$port"** | verbindet über SSH, Beispieloption für den Port | | **--filter=$datei** | [[#Filterregeln]] aus Datei lesen | ===== Filterregeln ===== ==== Regeln ==== ^ Zeilenbeginn ^ Bedeutung | | + | Inklusion | | - | Exklusion | | # | Kommentar (wird ignoriert) | ==== Muster ==== ^ Muster ^ Bedeutung | | /$file | Datei $file im Wurzelverzeichnis | | $dir/ | Verzeichnisse, die $dir heißen | ==== Beispiel ==== ~/.rsync-exclude <code> # Filterdatei selbst ausschließen - /rsync-filter.txt # Download-Ordner im Wurzelverzeichnis ausschließen - /Downloads/ # Papierkorb nicht mitsichern - /.Trash*/ # Thumbnails nicht mitsichern - .DS_Store - Thumbs.db # Cache-Ordner **TODO** # "geheime" Dotfiles ausschließen - /.*sh_history # Druckerspooler nicht sichern - /.cups/ # keine Cloud-Ordner sichern - /.dropbox/ - /.dropbox-master/ - /Google\ Drive/ - /Dropbox/ </code> ===== Tiefe der Synchronisation begrenzen ===== Synchronisiert nur bis zu einer Tiefe von 2 Ordnern und nicht weiter: <code bash>rsync -r --exclude="/*/*/" source/ target/</code> Je nach gewünschter Tiefe das "exclude" erweitern. ===== Nur bestimmte Dateien synchronisieren ===== <code>rsync -mnrv --include="*/" --include="file_11*.jpg" --exclude="*" /Storage/uploads/ /website/uploads/</code> | ''-m'' | löscht leere Ordner | | ''--include="*/"'' | Geht durch alle __Ordner__ | | ''--exclude="*"'' | ignoriert alle Dateien, die nicht inkludiert wurden | ===== Client ===== Ein funktionierendes passwortloses [[SSH]]-Setup ist von Vorteil. ==== Mac ==== === Systemvoraussetzungen === * rsync 3.0+ muss installiert sein (kein Abgleich von Dateilisten mehr) === Backup des Benutzerverzeichnisses === <code>/usr/local/bin/rsync -az --progress -e "ssh -pPORT" /Users/BENUTZER/ BENUTZER@SERVER:/backup/BENUTZER/</code> Wichtig: Slash am Ende des Quell- und Zielverzeichnisses! Kopiert alle Inhalte (Dateien und Unterordner) im Benutzer-Heimatverzeichnis in den Backup-Ordner des Benutzers. Kein Slash = Kopiert das Verzeichnis an sich. ==== volles System-Backup ==== <code bash> rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /* /path/to/backup/folder </code> ([[https://wiki.archlinux.org/index.php/Full_system_backup_with_rsync|Quelle]]) ===== Server ===== * rsync 3.0+ muss installiert sein * open[[SSH]] muss installiert sein * es ist nicht empfehlenswert, rsync im Server-Modus laufen zu lassen. Über SSH verliert man nur extrem wenig Geschwindigkeit, aber es ist viel sicherer. ==== SSH-Nutzern nur Rsync erlauben ==== <file bash /usr/local/bin/validated-rsync> #!/bin/sh case "$SSH_ORIGINAL_COMMAND" in *\&*) echo "Rejected" ;; *\(*) echo "Rejected" ;; *\{*) echo "Rejected" ;; *\;*) echo "Rejected" ;; *\<*) echo "Rejected" ;; *\>*) echo "Rejected" ;; *\`*) echo "Rejected" ;; *\|*) echo "Rejected" ;; rsync\ --server*) $SSH_ORIGINAL_COMMAND ;; *) echo "Rejected" ;; esac </file> Alternative: [[https://www.samba.org/ftp/unpacked/rsync/support/rrsync|rrsync]] ("restricted rsync") Last modified: 2024-07-05 14:31