silvesterlangen.de

Seite
Menü

Backups mit rsync

Ein weiteres Tools, um Backups zu erstellen ist rsync. Die Verwendung ist wieder relativ einfach. Ich zeige hier zwei Szenarien: Lokales Backup und remote Backup. Wie rdiff-backup arbeitet auch rsync auf Dateiebene und sichert bitweise. Das bedeutet, dass nur das übertragen wird, was sich wirklich verändert hat.

 

Die wichtigsten Optionen

  • -e Erlaubt die Verwendung einer Remote-Shell wie SSH. So lassen sich Sicherungen auch über SSH-Tunnel problemlos erreichen.
  • --delete Löscht auf dem Ziel Dateien, die auf der Quelle nicht mehr existieren. So sind am Ende Quelle und Ziel absolut gleich.
  • -q, --quiet Unterdrückt Fehlermeldungen.
  • -z, --compress Schaltet die Kompression während der Übertragung ein, was ein Geschwindigkeitsvorteil in den meisten Fällen ist. Bei Tests zeigte sich, wenn ich -z hinzufüge, bricht die Übertragung von 70 Mb/s auf nicht mal 20 Mb/s runter. Ich schlage vor das auszuprobieren statt in gutem Glauben das einfach einzuschalten.
  • -a, --archive Ist das Equivalent zu -rlptgoD. Es werden Verzeichnisse übertragen, Dateirechte beibehalten, Sybolic-Links bleiben erhalten uws.
  • -P Statusanzeige während der Übertragung.

 

Lokales Backup

Die Daten werden innerhalb des Servers in ein anderes Verzeichnis synchronisiert. Sinnvollerweise sollte in das Verzeichnis dann eine physikalisch andere Festplatte sein, um einen Ausfall der Festplatte, die kopiert wird, abzufedern.

rsync -av --delete /das/ist/die/quelle/  /das/ist/das/ziel/

Der Schalter -a steht für "archiv" und ersetzt alle diese Schalter: -rlptgoD. Der Schalter -v steht für "verbose" und zeigt an welche Dateien transferiert werden. Der Schalter --delete löscht alle Dateien auf dem Ziel, die in der Quelle nicht mehr vorhanden sind. Wenn man die Lösung nicht möchte, so lässt man --delete einfach weg.

 

Remote Backup

Beim Remote Backup ist die Quelle ein Computer, aber das Ziel ist ein anderer Server im Netzwerk worauf synchronisiert werden soll. Die Schalter sind die gleichen wie bei dem lokalen Backup. Allerdings sollte man rsync anweisen die Daten über einen SSH-Tunnel schicken, wenn die Server nicht in einem gesicherten heimischen Netzwerk transferiert werden.

Ohne SSH:
rsync -av --delete root@10.10.10.100:/Quelle/ /Zielverzeichnis

Mit SSH:
rsync -av --delete -e "ssh -i /home/user/.ssh/sshkey" root@10.10.10.100:/Quelle/ /Zielverzeichnis

Muss man den Zielport noch angeben, so ist innherhalb -e "ssh ..."  die Portangabe mit -p 2222 zu machen.

Wenn man SSH nutzen und das Backup automatisieren will, dann muss der Login ohne Passwortabfrage erfolgen.

 

Verzeichnisse und Dateien excludieren

Es kann durchaus mal sein, dass bestimmte Verzeichnisse oder Dateien von der Sicherung ausgenommen werden müssen. Das erreicht man mit dem Schalter --exclude bzw. --exclude-from. Dateien und Verzeichnisse funktionieren gleich. Hier mal zwei Beispiele:

rsync -av --exclude 'dir_ausnahme/' quelle/ ziel/

oder

rsync -av --exclude 'datei.txt' quelle/ ziel/

Dabei ist zu beachten, dass das ausgenommene Verzeichnis oder Datei relativ zur Quelle ist. Es lassen sich auch mehrere Dateien oder Verzeichnisse aufzählen. Dazu ist eine etwas andere Schreibweise notwendig, die auf zwei Arten erfolgen kann. Hier ein paar Beispiele:

rsync -av --exclude 'datei1' --exclude 'datei2' quelle/ ziel/

oder

rsync -av --exclude={'datei1','datei2'} quelle/ ziel/

Möchte man, dass das excludierte Verzeichnis zwar mitgesichert wird, allerdings ohne Inhalt, dann kann man das wie folgt tun:

rsync -av --exclude 'datei1/*' quelle/ ziel/

 

Nun könnte es sein, dass die Ausnahmen von einem Programm oder Script erzeugt werden und es wäre geradezu exzellent, wenn das in eine Datei geschrieben werden könnte, die rsync dann auslesen kann. Und ja, es geht.

Die eigentliche rsync-Zeile schaut dann wie folgt aus:

rsync -av --exclude-from='excluded-files.txt' quelle/ ziel/

Dazu benötigt man dann die Textdatei "excluded-files.txt", die folgenden Inhalt hat:

Datei1.txt
Datei2.txt
Datei.png
Directory1/
Directory2/*

Mehr Informationen dazu findet man hier.

 

Loggen - Format und Speicherort

Natürlich möchte man auch ein Logfile in dem man später prüfen kann, ob alles glatt gelaufen ist. Darüberhinaus möchte man, dass die Einträge im Log so sind, dass sie günstig zu lesen sind. Alle relevanten Informationen so wie man sie braucht.

  • --log-file="/root/rsync.log"  Erstellt ein Logfile in /root/
  • --log-file="/root/rsync.$(date +%d%m%Y).log"  Erstellt ein Logfile in /root/ mit aktuellem Datum im Format Tag.Monat.Jahr (bspw. 11.07.2019).

 

Rsync Statusanzeige

Damit man sehen kann wie weit rsync mit seiner Arbeit ist, kann man den Schalter --progress verwenden.

 

Rsync Exit-Codes:

EXIT VALUES
       0      Success
       1      Syntax or usage error
       2      Protocol incompatibility
       3      Errors selecting input/output files, dirs
       4      Requested  action  not supported: an attempt was made to manipu‐
              late 64-bit files on a platform that cannot support them; or  an
              option  was specified that is supported by the client and not by
              the server.
       5      Error starting client-server protocol
       6      Daemon unable to append to log-file
       10     Error in socket I/O
       11     Error in file I/O
       12     Error in rsync protocol data stream
       13     Errors with program diagnostics
       14     Error in IPC code
       20     Received SIGUSR1 or SIGINT
       21     Some error returned by waitpid()
       22     Error allocating core memory buffers
       23     Partial transfer due to error
       24     Partial transfer due to vanished source files
       25     The --max-delete limit stopped deletions
       30     Timeout in data send/receive
       35     Timeout waiting for daemon connection

Rsync-Statuscodes

>f.st......
> - the item is received
f - it is a regular file
s - the file size is different
t - the time stamp is different

.d..t......
. - the item is not being updated (though it might have attributes
that are being modified)
d - it is a directory
t - the time stamp is different

>f+++++++++
> - the item is received
f - a regular file
+++++++++ - this is a newly created item

« vorige Seite Seitenanfang nächste Seite »
Seite
Menü
Earned Certificates:
LPIC-1 LPIC-1 LPIC-1
Powered by CMSimple | Template by CMSimple | Login