Rsnapshot: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Chepaz (Diskussion | Beiträge)
K Verschiebung community -> extra
 
(21 dazwischenliegende Versionen von 11 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
==rsnapshot==
{{SEITENTITEL:rsnapshot}}
[http://www.rsnapshot.org/ rsnapshot] nutzt [[rsync]] und Hardlinks, um Schnappschüsse eines Dateisystems anzulegen. In Kombination mit [[Cron]]-Jobs lassen sich so regelmäßig Backups mit Historie anlegen. Dadurch ist es möglich, automatisiert stündlich, täglich, wöchentlich, monatlich oder jährlich zu sichern. Die Besonderheit hier ist, dass dabei nur Dateien neu geschrieben werden, die auch tatsächlich verändert wurden, auf schon existente Dateien wird nur ein Hardlink angelegt. Durch dieses Vorgehen wird immens Platz gespart '''und''' man hat mehrere Versionen zur Hand. rsnapshot eignet sich somit hervorragend für Backups auf eine externe Festplatte, ein [[Network_File_System|NFS]]-Share oder ähnliches.


[http://www.rsnapshot.org/ Rsnapshot] nutzt Rsync und Hardlinks sehr intelligent um "Schnappschüsse" deines Filesystems anzulegen. Mit Hilfe von Cronjobs lassen sich Backups mit Historie anlegen, z.B. wäre es ist möglich Stündlich/Täglich/Wöchentlich/Monatlich/Jährlich zu sichern. Dabei werden nur Dateien neu geschrieben die auch tatsächlich verändert wurden, auf schon existente Dateien wird "nur" ein Hardlink angelegt. Durch dieses Vorgehen wird immens Platz gespart '''und''' man hat mehrere Versionen zur Hand. Rsnapshot eignet sich somit hervorragend um Backups auf eine externe Festplatte, NFS... etc. zu machen.
{{installation|repo=extra|paket=rsnapshot}}


===Installation===
==Konfiguration==
rsnapshot.conf editieren
vim /etc/rsnapshot.conf


<code>
Die Datei ist gut kommentiert und fast selbsterklärend. Ein schnelles "Walkthrough" mit dem Nötigsten:
  pacman -S rsnapshot
</code>


===Konfiguration===
Zielordner für die Backups:
snapshot_root  /pfad/zu/deinem/backup/ordner/


rsnapshot.conf editieren:
Leerzeichen im Pfad werden von rsnapshot 1.3.1 nicht unterstützt.
<code>
  vim /etc/rsnapshot.conf
</code>


Die Datei ist gut durchkommentiert und fast selbsterklärend. Ein schnelles "Walkthrough" mit dem Nötigsten:
Kein automatisches erstellen des Ordners wenn es ihn nicht gibt (z.b. externe Platte noch nicht angeschlossen)
no_create_root  1


Ordner für die Backups:
Intervalle für Backups. Das bedeutet, dass beim ''daily'' Backup sieben inkrementelle Backups angelegt werden (''daily.0'', ''daily.1'',...), bevor wieder von vorne angefangen und überschrieben wird.
<code>
interval        daily  7
  snapshot_root  /pfad/zu/deinem/backup/ordner/
interval        weekly  4
</code>
interval        monthly 3
Auf einem Filesystem bleiben (Sonst sichert rsnapshot z.B. /proc /sys etc., das wollen wir nicht)
one_fs          1


Kein automatisches erstellen des Ordners wenn es ihn nicht gibt (z.b. externe Platte noch nicht angeschlossen):
Um bestimmte Ordner oder Dateien auszuschließen, legt man eine Datei beliebigen Namens, zum Beispiel ''exclude'' in ''/pfad/zu/deinem/backup/ordner/'' an. In dieser listet man einfach die auszuschließenden Dateien auf.
<code>
Zum Beispiel sieht so meine "exclude" für mein Laptop aus:
  no_create_root 1
## Excludefile for rsnapshot
</code>
  /home/chepaz/.thumbnails/
/home/chepaz/.gvfs/
/home/lost+found/


Intervalle für Backups. Im Beispiel --> 7 Vorhaltungen von daily, 4 von weekly, 3 monthly
Die exclude-Datei muss anschließend noch in rsnapshot.conf angegeben werden
<code>
  exclude_file /pfad/zu/deinem/backup/ordner/exclude
  interval        daily  7
  interval        weekly 4
  interval        monthly 3
</code>
Auf einem Filesystem bleiben (Sonst sichert rsnapshot z.B. /proc /sys etc., das wollen wir nicht):
<code>
  one_fs          1
</code>


Um Spezielle Files/Ordner auszuschliessen legt man am besten eine Datei in /pfad/zu/deinem/backup/ordner/ an. In diese schreibt man einfach die Files/Ordner die man ausschliesen möchte.
Nun muss man rsnapshot noch sagen, welche Verzeichnisse er überhaupt sichern soll. Beispielsweise hier ein Auszug von meinem Server.
Zum Beispiel sieht so meine "exclude" für mein Laptop aus:
('''Achtung: TABs, keine Leerzeichen!''')
<code>
backup  /home/         localhost/
  ## Ecludefile for rsnapshot
backup  /etc/           localhost/
  /home/chepaz/.thumbnails/
backup /usr/local/     localhost/
  /home/chepaz/.gvfs/
backup  /root/          localhost/
  /home/lost+found/
backup  /var/           localhost/
</code>
In diesem Beispiel würde nun das erste tägliche Update ''daily'' nach /pfad/zu/deinem/backup/ordner/localhost/daily.0/ geschrieben werden.


Das Excludefile noch in rsnapshot.conf angeben:
Man kann die Konfiguration nun auf Syntax und Integrität prüfen.
<code>
rsnapshot configtest
  exclude /pfad/zu/deinem/backup/ordner/exclude
</code>
Nun muß man rsnapshot noch sagen welche Verzeichnisse er überhaupt sichern soll. Beispielsweise hier ein Auszug von meinem Server. ('''Achtung: TABs, keine Leerzeichen!'''):
<code>
  backup  /home/          localhost/
  backup  /etc/          localhost/
  backup  /usr/local/    localhost/
  backup  /root/          localhost/
  backup  /var/          localhost/
</code>


Zum Abschluss kann man noch einen Testlauf anwerfen:
Zum Abschluss kann man noch einen Testlauf anwerfen
<code>
rsnapshot -t daily
  rsnapshot -t daily
</code>


Wenn keine Fehler auftauchen: '''Feuer frei''' ;)
Wenn keine Fehler auftauchen: '''Feuer frei''' ;)
<code>
rsnapshot -v daily
  rsnapshot -v daily
 
</code>
Möchte man den Fortschritt auf Dateiebene verfolgen, dann:
Der erste Lauf wird sehr lange dauern da hier erstmal '''alle''' Dateien kopiert werden. Bei allen nachfolgenden Läufen werden nur die Dateien kopiert die geändert wurden.
rsnapshot -V daily
 
Der erste Lauf wird sehr lange dauern da hier erstmal alle Dateien kopiert werden. Bei allen nachfolgenden Läufen werden nur die Dateien kopiert die geändert wurden.
Das -v steht für Verbose und zeigt die Shellkommandos an die rsnapshot ausführt. Wer sich von allen Details erschlagen lassen will nimmt -V oder auch -D, für einen unauffälligen Backgroundtask sei euch -q ans Herz gelegt.
Das -v steht für Verbose und zeigt die Shellkommandos an die rsnapshot ausführt. Wer sich von allen Details erschlagen lassen will nimmt -V oder auch -D, für einen unauffälligen Backgroundtask sei euch -q ans Herz gelegt.


===Automatisierung===
==Automatisierung==
Wenn man das noch automatisieren möchte kann man Cronjobs anlegen:
Wenn man das noch automatisieren möchte, kann man [[Cron]]-Jobs anlegen.
<code>
crontab -e
  crontab -e
</code>
Beispiel:
Beispiel:
<code>
0 2 * * * rsnapshot daily
  * 2 * * * rsnapshot daily
0 3 * * 1 rsnapshot weekly
  * 3 * * 1 rsnapshot weekly
0 4 1 * * rsnapshot monthly
  * 4 1 * * rsnapshot monthly
 
</code>
==Server Backup über SSH==
Rsnapshot kann Remote Server über [[SSH]] sichern. Dafür muss man ein paar zusätzliche Konfigurationen vornehmen und Voraussetzungen erfüllen.
In diesem Szenario beinhaltet der Server die zu sichernden Daten während der Client das Backup-Ziel und rsnapshot bereitstellt.
 
Ein anderes Szenario - Backup ''auf'' einen Remote Server per SSH - wird nicht unterstützt. [http://rsnapshot.org/faq.html Hier] wird beschrieben, wie man es über [[Network File System|NFS]] umsetzen kann.
 
===Auf dem Server===
* Der [https://wiki.archlinux.de/title/SSH#Daemon_sshd.service sshd.service daemon] muss laufen
* Möchte man das Backup nicht als root ausführen, muss der User mindestens Leserechte auf die zu sichernden Ordner haben
 
===Auf dem Client===
'''Key Authentification'''
 
Für die Verwendung von SSH in rsnapshot muss eine [[SSH-Authentifizierung mit Schlüsselpaaren]] eingerichtet werden.
 
'''rsnapshot.conf'''
 
SSH als externes Programm aktivieren.
cmd_ssh /usr/bin/ssh
 
Mit ssh_args können Parameter an SSH übergeben werden. Mehr Informationen kann man über '''ssh -h''' erhalten.
Hier ein Beispiel, welchen den Port als 22 definiert und auf die zur Authentifizierung benötigte Keyfile verweist.
Username und die Keyfile an die eigenen Namen anpassen.
ssh_args -p 22 -i /home/username/.ssh/id_ed25519
 
Die Backup Verzeichnisse definiert man ähnlich wie in der normalen Verwendung von rsnapshot.
backup  user-on-remote-system@ip:/folder-to-backup/  local-backup-folder/
 
Hier wird mit dem Server-root das remote Homeverzeichnis ins lokale Verzeichnis backup gesichert.
backup root@8.8.8.8:/home/ backup/
 
Man kann rsnapshot dann lokal ausführen. Configtest und Testlauf nicht vergessen.
Bei Ausführung muss das Passwort zur Keyfile eingegeben werden.
 
Möchte man dieses Setup als Cronjob ausführen, darf die Keyfile keinen Passwortschutz haben. '''Achtung!''' Dadurch gewährt man jedem, der Zugriff auf die Keyfile hat auch Zugriff auf den Server. Das stellt ein großes Sicherheitsrisiko dar und sollte nicht getan werden!
 
==Tipps & Tricks==
'''Pfade kürzen:'''
 
Eine Backupzeile wie diese
backup  /langer/weg/zum/ziel/    localhost/
legt eine solche Ordnerstruktur im Filesystem an
$snapshot_root/daily.0/localhost/langer/weg/zum/ziel/weitere/Ordner
 
Möchte man nun alles unterhalb von <code>/langer/weg/zum/ziel/</code> ohne diesen kompletten Pfad ins Backup schieben damit die Struktur dann z.B. so aussieht
$snapshot_root/daily.0/localhost/weitere/Ordner
 
kann man die Backupzeile so erweitern
  backup  /langer/weg/zum/ziel/    localhost/    +rsync_long_args=--no-relative
Bei obiger Zeile daran denken das mit '''Tabs''' getrennt wird, '''keine Leerzeichen'''.


...möge euer Backup mit euch sein! :)
...möge euer Backup mit euch sein! :)


== Siehe auch ==
[[Automatische Sicherung (Beispiel)]]
[[Kategorie:Systemverwaltung]]
[[Kategorie:Systemverwaltung]]
[[Kategorie: Befehle]]
[[en:Rsnapshot]]

Aktuelle Version vom 24. Mai 2023, 18:21 Uhr

rsnapshot nutzt rsync und Hardlinks, um Schnappschüsse eines Dateisystems anzulegen. In Kombination mit Cron-Jobs lassen sich so regelmäßig Backups mit Historie anlegen. Dadurch ist es möglich, automatisiert stündlich, täglich, wöchentlich, monatlich oder jährlich zu sichern. Die Besonderheit hier ist, dass dabei nur Dateien neu geschrieben werden, die auch tatsächlich verändert wurden, auf schon existente Dateien wird nur ein Hardlink angelegt. Durch dieses Vorgehen wird immens Platz gespart und man hat mehrere Versionen zur Hand. rsnapshot eignet sich somit hervorragend für Backups auf eine externe Festplatte, ein NFS-Share oder ähnliches.

Installation

Das Programm ist als rsnapshot in extra verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S rsnapshot

Konfiguration

rsnapshot.conf editieren

vim /etc/rsnapshot.conf

Die Datei ist gut kommentiert und fast selbsterklärend. Ein schnelles "Walkthrough" mit dem Nötigsten:

Zielordner für die Backups:

snapshot_root   /pfad/zu/deinem/backup/ordner/

Leerzeichen im Pfad werden von rsnapshot 1.3.1 nicht unterstützt.

Kein automatisches erstellen des Ordners wenn es ihn nicht gibt (z.b. externe Platte noch nicht angeschlossen)

no_create_root  1

Intervalle für Backups. Das bedeutet, dass beim daily Backup sieben inkrementelle Backups angelegt werden (daily.0, daily.1,...), bevor wieder von vorne angefangen und überschrieben wird.

interval        daily   7
interval        weekly  4
interval        monthly 3

Auf einem Filesystem bleiben (Sonst sichert rsnapshot z.B. /proc /sys etc., das wollen wir nicht)

one_fs          1

Um bestimmte Ordner oder Dateien auszuschließen, legt man eine Datei beliebigen Namens, zum Beispiel exclude in /pfad/zu/deinem/backup/ordner/ an. In dieser listet man einfach die auszuschließenden Dateien auf. Zum Beispiel sieht so meine "exclude" für mein Laptop aus:

## Excludefile for rsnapshot
/home/chepaz/.thumbnails/
/home/chepaz/.gvfs/
/home/lost+found/

Die exclude-Datei muss anschließend noch in rsnapshot.conf angegeben werden

exclude_file /pfad/zu/deinem/backup/ordner/exclude

Nun muss man rsnapshot noch sagen, welche Verzeichnisse er überhaupt sichern soll. Beispielsweise hier ein Auszug von meinem Server. (Achtung: TABs, keine Leerzeichen!)

backup  /home/          localhost/
backup  /etc/           localhost/
backup  /usr/local/     localhost/
backup  /root/          localhost/
backup  /var/           localhost/

In diesem Beispiel würde nun das erste tägliche Update daily nach /pfad/zu/deinem/backup/ordner/localhost/daily.0/ geschrieben werden.

Man kann die Konfiguration nun auf Syntax und Integrität prüfen.

rsnapshot configtest

Zum Abschluss kann man noch einen Testlauf anwerfen

rsnapshot -t daily

Wenn keine Fehler auftauchen: Feuer frei ;)

rsnapshot -v daily

Möchte man den Fortschritt auf Dateiebene verfolgen, dann:

rsnapshot -V daily

Der erste Lauf wird sehr lange dauern da hier erstmal alle Dateien kopiert werden. Bei allen nachfolgenden Läufen werden nur die Dateien kopiert die geändert wurden. Das -v steht für Verbose und zeigt die Shellkommandos an die rsnapshot ausführt. Wer sich von allen Details erschlagen lassen will nimmt -V oder auch -D, für einen unauffälligen Backgroundtask sei euch -q ans Herz gelegt.

Automatisierung

Wenn man das noch automatisieren möchte, kann man Cron-Jobs anlegen.

crontab -e

Beispiel:

0 2 * * * rsnapshot daily
0 3 * * 1 rsnapshot weekly
0 4 1 * * rsnapshot monthly

Server Backup über SSH

Rsnapshot kann Remote Server über SSH sichern. Dafür muss man ein paar zusätzliche Konfigurationen vornehmen und Voraussetzungen erfüllen. In diesem Szenario beinhaltet der Server die zu sichernden Daten während der Client das Backup-Ziel und rsnapshot bereitstellt.

Ein anderes Szenario - Backup auf einen Remote Server per SSH - wird nicht unterstützt. Hier wird beschrieben, wie man es über NFS umsetzen kann.

Auf dem Server

  • Der sshd.service daemon muss laufen
  • Möchte man das Backup nicht als root ausführen, muss der User mindestens Leserechte auf die zu sichernden Ordner haben

Auf dem Client

Key Authentification

Für die Verwendung von SSH in rsnapshot muss eine SSH-Authentifizierung mit Schlüsselpaaren eingerichtet werden.

rsnapshot.conf

SSH als externes Programm aktivieren.

cmd_ssh	/usr/bin/ssh

Mit ssh_args können Parameter an SSH übergeben werden. Mehr Informationen kann man über ssh -h erhalten. Hier ein Beispiel, welchen den Port als 22 definiert und auf die zur Authentifizierung benötigte Keyfile verweist. Username und die Keyfile an die eigenen Namen anpassen.

ssh_args	-p 22 -i /home/username/.ssh/id_ed25519

Die Backup Verzeichnisse definiert man ähnlich wie in der normalen Verwendung von rsnapshot.

backup  user-on-remote-system@ip:/folder-to-backup/  local-backup-folder/

Hier wird mit dem Server-root das remote Homeverzeichnis ins lokale Verzeichnis backup gesichert.

backup	root@8.8.8.8:/home/	backup/

Man kann rsnapshot dann lokal ausführen. Configtest und Testlauf nicht vergessen. Bei Ausführung muss das Passwort zur Keyfile eingegeben werden.

Möchte man dieses Setup als Cronjob ausführen, darf die Keyfile keinen Passwortschutz haben. Achtung! Dadurch gewährt man jedem, der Zugriff auf die Keyfile hat auch Zugriff auf den Server. Das stellt ein großes Sicherheitsrisiko dar und sollte nicht getan werden!

Tipps & Tricks

Pfade kürzen:

Eine Backupzeile wie diese

backup  /langer/weg/zum/ziel/     localhost/

legt eine solche Ordnerstruktur im Filesystem an

$snapshot_root/daily.0/localhost/langer/weg/zum/ziel/weitere/Ordner

Möchte man nun alles unterhalb von /langer/weg/zum/ziel/ ohne diesen kompletten Pfad ins Backup schieben damit die Struktur dann z.B. so aussieht

$snapshot_root/daily.0/localhost/weitere/Ordner

kann man die Backupzeile so erweitern

 backup  /langer/weg/zum/ziel/     localhost/    +rsync_long_args=--no-relative

Bei obiger Zeile daran denken das mit Tabs getrennt wird, keine Leerzeichen.

...möge euer Backup mit euch sein! :)

Siehe auch

Automatische Sicherung (Beispiel)