Rsync/Anwendung: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 6: | Zeile 6: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Beispiel | |||
<syntaxhighlight lang="bash" highlight="1" line> | <syntaxhighlight lang="bash" highlight="1" line> | ||
rsync -a /home/user /data/backup | rsync -a /home/user /data/backup | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Anstelle des Platzhalters QUELLE gibt man den Ort an aus dem gelesen werden soll und das ZIEL bestimmt den Ort in den rsync zu kopieren hat | |||
* Gibt man nur einen Parameter an, so wird dieser als Ziel interpretiert und es gilt das aktuelle Verzeichnis als Quelle | |||
; Gesamte Homeverzeichnis | |||
Kopiert man das gesamte Homeverzeichnis, so werden auch private Daten, wie die privaten Schlüssel von SSH und GnuPG kopiert | Kopiert man das gesamte Homeverzeichnis, so werden auch private Daten, wie die privaten Schlüssel von SSH und GnuPG kopiert | ||
; Zugriffsrechte | |||
rsync kann nur das kopieren, wozu der Nutzer auch Rechte hat, z. B. bei | rsync kann nur das kopieren, wozu der Nutzer auch Rechte hat, z. B. bei | ||
<syntaxhighlight lang="bash" highlight="1" line> | <syntaxhighlight lang="bash" highlight="1" line> | ||
Zeile 27: | Zeile 30: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Konten wechselseitig sichern | |||
Vorsicht ist geboten, wenn man versucht, Konten wechselseitig zu sichern | Vorsicht ist geboten, wenn man versucht, Konten wechselseitig zu sichern | ||
* Man sollte darauf achten, dass man nicht das Backup von A auf B wieder auf A kopiert | * Man sollte darauf achten, dass man nicht das Backup von A auf B wieder auf A kopiert | ||
; --delete | |||
Nicht zuletzt bedeutet die Option --delete wirklich delete! | Nicht zuletzt bedeutet die Option --delete wirklich delete! | ||
* Sind in dem Zielverzeichnis andere Daten, werden sie ins Backup-Verzeichnis geschoben oder auch gelöscht! | |||
Sind in dem Zielverzeichnis andere Daten, werden sie ins Backup-Verzeichnis geschoben oder auch gelöscht! | |||
Bei allen Angaben zur Quelle und/oder des Ziels ist zu beachten, die slashes richtig zu setzen | Bei allen Angaben zur Quelle und/oder des Ziels ist zu beachten, die slashes richtig zu setzen | ||
Zeile 70: | Zeile 74: | ||
Dazu benötigt man die Option <tt>-a</tt>, damit alle Rechte erhalten bleiben. <tt>-v</tt> ist immer gut, damit man sieht, was passiert | Dazu benötigt man die Option <tt>-a</tt>, damit alle Rechte erhalten bleiben. <tt>-v</tt> ist immer gut, damit man sieht, was passiert | ||
* Der Parameter <tt>-z</tt> verringert die Datenmenge, die übertragen werden muss, und <tt>-e</tt> wird benötigt, um ssh anzugeben | * Der Parameter <tt>-z</tt> verringert die Datenmenge, die übertragen werden muss, und <tt>-e</tt> wird benötigt, um ssh anzugeben | ||
; Beispiel | |||
<syntaxhighlight lang="bash" highlight="1" line> | <syntaxhighlight lang="bash" highlight="1" line> | ||
rsync -avze ssh /home/benutzer benutzer@example.com:/backups | rsync -avze ssh /home/benutzer benutzer@example.com:/backups | ||
Zeile 89: | Zeile 94: | ||
* Diese Backups befinden sich in dem mit <tt>--backup-dir</tt> angegebenen Verzeichnis | * Diese Backups befinden sich in dem mit <tt>--backup-dir</tt> angegebenen Verzeichnis | ||
; Beispiel | |||
<syntaxhighlight lang="bash" highlight="1" line> | <syntaxhighlight lang="bash" highlight="1" line> | ||
rsync --delete -avzbe ssh benutzer@example.com:/var/www /home/benutzer/webserver --backup-dir=~/old | rsync --delete -avzbe ssh benutzer@example.com:/var/www /home/benutzer/webserver --backup-dir=~/old | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; SSH-Optionen | |||
Sollen dem SSH-Befehl weitere Optionen angehängt werden, z. B. -i um einen abweichenden Private-Key bei der Anmeldung zu übergeben, muss der SSH-Befehl in einfache Anführungszeichen gesetzt werden, etwa so | Sollen dem SSH-Befehl weitere Optionen angehängt werden, z. B. -i um einen abweichenden Private-Key bei der Anmeldung zu übergeben, muss der SSH-Befehl in einfache Anführungszeichen gesetzt werden, etwa so | ||
<syntaxhighlight lang="bash" highlight="1" line> | <syntaxhighlight lang="bash" highlight="1" line> | ||
Zeile 99: | Zeile 105: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Key File | |||
Der Pfad zu dem Private-Key File muss dabei absolut sein | Der Pfad zu dem Private-Key File muss dabei absolut sein | ||
* Dann den ganzen Befehl mit Cron zeitgesteuert automatisieren und die Angst vor einer defekten Festplatte oder versehentlich gelöschten Daten ist vorbei | * Dann den ganzen Befehl mit Cron zeitgesteuert automatisieren und die Angst vor einer defekten Festplatte oder versehentlich gelöschten Daten ist vorbei |
Version vom 19. April 2025, 10:39 Uhr
Rsync/Anwendung - Verzeichnisse synchronisieren
Beschreibung
rsync [OPTIONEN] QUELLE ZIEL
- Beispiel
rsync -a /home/user /data/backup
Anstelle des Platzhalters QUELLE gibt man den Ort an aus dem gelesen werden soll und das ZIEL bestimmt den Ort in den rsync zu kopieren hat
- Gibt man nur einen Parameter an, so wird dieser als Ziel interpretiert und es gilt das aktuelle Verzeichnis als Quelle
- Gesamte Homeverzeichnis
Kopiert man das gesamte Homeverzeichnis, so werden auch private Daten, wie die privaten Schlüssel von SSH und GnuPG kopiert
- Zugriffsrechte
rsync kann nur das kopieren, wozu der Nutzer auch Rechte hat, z. B. bei
rsync -a /etc ZIEL
kann es zu Problemen kommen
Falls nicht alles kopiert wird, kann man versuchen, von "Hand" die Daten mit cp bzw. scp zu kopieren oder man gibt sich durch das vorangestellte sudo Root-Rechte
sudo rsync -a /etc ZIEL
- Konten wechselseitig sichern
Vorsicht ist geboten, wenn man versucht, Konten wechselseitig zu sichern
- Man sollte darauf achten, dass man nicht das Backup von A auf B wieder auf A kopiert
- --delete
Nicht zuletzt bedeutet die Option --delete wirklich delete!
- Sind in dem Zielverzeichnis andere Daten, werden sie ins Backup-Verzeichnis geschoben oder auch gelöscht!
Bei allen Angaben zur Quelle und/oder des Ziels ist zu beachten, die slashes richtig zu setzen
- Folgendes Beispiel soll dies verdeutlichen
rsync -a /boot/grub /data/backup
erzeugt einen Unterordner /grub in /data/backup, weil kein slash hinter /boot/grub steht
- Das heißt, dass die Daten nicht in /data/backup gespeichert werden sondern in /data/backup/grub
Wird der Befehl so
rsync -a /boot/grub/ /data/backup
angewandt wird kein Unterordner beim Ziel erzeugt, da nun ein slash hinter /boot/grub/ steht
- Das heißt, dass alle Daten von /boot/grub/ tatsächlich in das Verzeichnis /data/backup geschrieben werden
- Folgende zwei Befehle sollen dies nochmals unterstreichen, da beide exakt das gleiche abgleichen und kopieren
rsync -a /boot/grub /data/backup
rsync -a /boot/grub/ /data/backup/grub
Systemintern
Man kann neben dem Transfer über das Netzwerk rsync natürlich auch nutzen, um ein Backup auf eine andere interne oder externe (dies ist zu bevorzugen) Festplatte zu tätigen
- Möchte man zum Beispiel alle Benutzerverzeichnisse sichern, so kann man dies bewerkstelligen mit
rsync -av --progress --delete /home /media/Backup/
Auf entfernten Rechner
In diesem Beispiel soll ein lokales Homeverzeichnis (/home/benutzer) auf einen zweiten Rechner mit dem Namen example.com gesichert werden, zu dem man per SSH Zugang hat
Dazu benötigt man die Option -a, damit alle Rechte erhalten bleiben. -v ist immer gut, damit man sieht, was passiert
- Der Parameter -z verringert die Datenmenge, die übertragen werden muss, und -e wird benötigt, um ssh anzugeben
- Beispiel
rsync -avze ssh /home/benutzer benutzer@example.com:/backups
Dies würde eine Kopie von /home/benutzer vom lokalen Rechner zum entfernten Rechner ins Verzeichnis /backups kopieren
SSH-Port angeben
rsync -avz -e "ssh -p PORTNUMMER" user@remoteip:/path/to/files/ /local/path/
Von entferntem Rechner
In diesem Beispiel soll das Verzeichnis /var/www vom Rechner example.com auf den lokalen Rechner gesichert werden
- Außerdem sollen alle Dateien, die in /var/www gelöscht wurden, nachdem die letzte Sicherung erstellt wurde, lokal ebenfalls gelöscht werden, nachdem man sie noch ein letztes Mal sichert
Es werden wieder die selben Optionen wie vorher genommen, sowie --delete für das Löschen und -b für Backups gelöschter und veränderter Dateien
- Diese Backups befinden sich in dem mit --backup-dir angegebenen Verzeichnis
- Beispiel
rsync --delete -avzbe ssh benutzer@example.com:/var/www /home/benutzer/webserver --backup-dir=~/old
- SSH-Optionen
Sollen dem SSH-Befehl weitere Optionen angehängt werden, z. B. -i um einen abweichenden Private-Key bei der Anmeldung zu übergeben, muss der SSH-Befehl in einfache Anführungszeichen gesetzt werden, etwa so
rsync --delete -avzbe 'ssh -i /pfad/zur/id_rsa' benutzer@example.com:/var/www /home/benutzer/webserver --backup-dir=~/old
- Key File
Der Pfad zu dem Private-Key File muss dabei absolut sein
- Dann den ganzen Befehl mit Cron zeitgesteuert automatisieren und die Angst vor einer defekten Festplatte oder versehentlich gelöschten Daten ist vorbei
Zeichensätze
- Abgleich von Dateien zwischen Rechnern mit unterschiedlichen Zeichensätzen
Werden Daten zwischen Systemen mit verschiedenen Zeichensätzen übertragen, werden Dateien mit Sonderzeichen im Dateinamen im Zielverzeichnis möglicherweise falsch benannt
- Abhilfe schafft hier der Parameter --iconv (seit rsync 3.0.0), mit dem die Sonderzeichen zwischen den unterschiedlichen Zeichensätzen konvertiert werden können
- Der Parameter erwartet als Werte die Codepages des lokalen und des Remote-Systems
- Sollen beispielsweise Dateien mit Sonderzeichen im Dateinamen von einem System mit Codepage 1252 auf den lokalen Rechner (UTF-8) übertragen werden, lautet der Befehl
rsync --iconv=UTF-8,CP1252 -avze ssh benutzer@example.com:/var/www /home/benutzer/webserver
Hierbei werden die Dateinamen aus /var/www vom Rechner rechner.de beim Übertragen auf den lokalen Rechner in das Verzeichnis /home/benutzer/webserver von Codepage 1252 nach UTF-8 umgewandelt
Verzeichnisse ausschließen
Mit dem Parameter --exclude können Verzeichnisse von der Bearbeitung ausgeschlossen werden
- Dabei ist zu beachten, dass die Quelle immer als Bezugspunkt interpretiert wird
Wenn also Daten vom Verzeichnis /home/user/daten/ nach /home/user/backup/ gesichert werden sollen und dabei das Verzeichnis /home/user/daten/temp/ nicht berücksichtigt werden soll, muss der Befehl so
rsync [OPTIONEN] --exclude=temp/ /home/user/daten/ /home/user/backup/
aussehen
Das per exclude bezeichnete Verzeichniss ist also kein absoluter Pfad, sonder relativ zum rsync Verzeichniss <Quelle> zu sehen - hier in diesem Beispiel also /home/user/daten/
Taucht der auszuschließende Ordner temp noch an weiteren Punkten der Quellhierarchie auf, so werden diese ebenfalls von der Sicherung ausgeschlossen
Möchte man außerdem "incremental backups" von sbackup von der Sicherung ausnehmen, so müsste der Befehl so
rsync [OPTIONEN] --exclude=temp/ --exclude=*.inc /home/user/daten/ /home/user/backup/
Mehrere auszuschließende Ordner kann man auch in eine Datei speichern und dann im rsync Aufruf per --exclude-from=FILE übergeben
- Beispiel exclude FILE
- Downloads
- Ubuntu One
+ .config
+ .gconf
+ .gnome2
+ .local
- .*
Angenommen, man möchte das ganze Home Verzeichnis sichern, jedoch einige Verzeichnisse ausschliessen und andere einschliessen, dann führt die o.a
- Datei zu folgendem Ergebnis:
- die Verzeichnisse 'Downloads', 'Ubuntu One' und alle versteckten Verzeichnisse '.*' werden nicht gesichert
- von den versteckten Verzeichnissen sollen aber dennoch '.config', '.gconf', '.gnome2' und '.local' gesichert werden
- Achtung
- die Reihenfolge der Einträge in der Datei ist wichtig
Anhang
Siehe auch
Links
Weblinks
Achtung: Der Sortierungsschlüssel „rsync/Anwendung“ überschreibt den vorher verwendeten Schlüssel „new“.