Website-Suche

So erstellen Sie Backups mit Rsnapshot unter Linux


Rsnapshot ist ein kostenloses Open-Source-Dienstprogramm, das als Wrapper um Rsync fungiert, um inkrementelle Snapshots von lokalen oder entfernten Systemen über SSH durchzuführen. Hardlinks werden verwendet, um beim Sichern unveränderter Dateien Platz zu sparen, Platz zu sparen und dem Benutzer dennoch vollständige Dateisysteme anzuzeigen. In diesem Tutorial erfahren Sie, wie Sie Rsnapshot auf einigen der am häufigsten verwendeten Linux-Distributionen installieren und konfigurieren.

In diesem Tutorial lernen Sie:

  • So installieren Sie rsnapshot auf einigen der am häufigsten verwendeten Linux-Distributionen
  • So konfigurieren Sie rsnapshots für die Sicherung lokaler und Remote-Computer über SSH

Installation

Da rsnapshot ein kostenloses Open-Source-Dienstprogramm ist, ist es in den offiziellen oder vertrauenswürdigen Repositories von Drittanbietern aller am häufigsten verwendeten Linux-Distributionen verfügbar. Um das Dienstprogramm beispielsweise auf Fedora zu installieren, müssen wir lediglich unseren bevorzugten Terminal-Emulator starten und den folgenden Befehl ausführen:

sudo dnf install rsnapshot

Wir können Rsnapshot auf RHEL (Red Hat Enterprise Linux) und seinen Klonen mit demselben Befehl installieren. Bei diesen Distributionen müssen wir jedoch vorher das EPEL-Repository als Softwarequelle hinzufügen.

Um die Installation unter Debian, Ubuntu und anderen Debian-basierten Distributionen durchzuführen, verwenden wir den apt-Paketmanager:

sudo apt install rsnapshot

Rsnapshot ist auch im "extra"-Repository von Archlinux verfügbar. Wir können es mit pacman installieren:

sudo pacman -S rsnapshot

Sobald wir Rsnapshot in unserer bevorzugten Linux-Distribution installiert haben, können wir es verwenden, um inkrementelle Backups zu erstellen. Mal sehen, wie.

Rsnapshot-Konfiguration

Um rsnapshot zu konfigurieren, bearbeiten wir die Konfigurationsdatei: /etc/rsnapshot.conf. Wie in der großen Warnung am Anfang der Datei angegeben, dürfen nur Tabulatoren zwischen Elementen verwendet werden. Die Verwendung von Leerzeichen würde zu Syntaxfehlern führen:

#################################################
                                              #
PLEASE BE AWARE OF THE FOLLOWING RULE:        #
                                              #
This file requires tabs between elements      #
                                              #
#################################################

Die erste Direktive, die wir in der Datei definieren möchten, ist snapshot_root. Wie der Name schon sagt, wird es verwendet, um das Verzeichnis anzugeben, in dem alle Snapshots gespeichert werden sollen. Im folgenden Beispiel verwenden wir das Verzeichnis /snapshotsals Snapshots-Stamm:

All snapshots will be stored under this root directory.
#
snapshot_root /snapshots/

Wenn das Verzeichnis nicht existiert, wird es automatisch erstellt, wenn die erste Sicherung durchgeführt wird, es sei denn, die Direktive no_create_root ist aktiviert (der Standardwert ist normalerweise 0):

If no_create_root is enabled, rsnapshot will not automatically create the
snapshot_root directory. This is particularly useful if you are backing
up to removable media, such as a FireWire or USB drive.
#
#no_create_root 1

Verweisen von Rsnapshot auf den rsync-Pfad

Rsnapshot verwendet rsync, um Sicherungen durchzuführen, daher müssen wir den Speicherort der rsync-Binärdatei über die Direktive cmd_rsync angeben. Dies ist standardmäßig auf /usr/bin/rsync gesetzt und erfordert keine Änderungen, es sei denn, wir haben rsync an einem anderen Ort installiert:

rsync must be enabled for anything to work. This is the only command that
must be enabled.
#
cmd_rsync /usr/bin/rsync

Einrichten einer Aufbewahrungsrichtlinie

Bevor wir mit der Erstellung unserer Backups beginnen, müssen wir eine Aufbewahrungsrichtlinie festlegen: Wir müssen die verschiedenen Backup-Typen definieren und angeben, wie viele Snapshots eines bestimmten Typs aufbewahrt werden sollen. Um die Aufbewahrungsrichtlinie festzulegen, verwenden wir das Schlüsselwort retain, gefolgt vom Namen eines Backups vom Typ " (der Name ist völlig beliebig) und von einer Ganzzahl, die angibt, wie viele Backups dieses Typs aufbewahrt werden sollen. Hier ist die Standardkonfiguration auf einem Ubuntu-System:

#########################################
BACKUP LEVELS / INTERVALS             #
Must be unique and in ascending order #
e.g. alpha, beta, gamma, etc.         #
#########################################
retain alpha 6
retain beta 7
retain gamma 4

Standardmäßig werden "alpha", "beta" und "gamma" als Bezeichner verwendet, diese Namen sind jedoch nicht wirklich indikativ. Wir können freundlichere und aussagekräftigere verwenden, zum Beispiel:

retain daily 6
retain weekly 7 
retain monthly 4

Denken Sie auch hier daran, dass Namen völlig willkürlich sind und Rsnapshot nicht weiß, was sie bedeuten. Wir geben einen Sicherungstyp an, wenn wir rsnapshot aufrufen: Alles, was es weiß, ist, wie viele Sicherungen eines bestimmten Typs es aufbewahren soll.

Angeben, was gesichert werden soll

Um anzugeben, welche Dateien und Verzeichnisse in Snapshots aufgenommen werden sollen, verwenden wir die backup-Direktive und übergeben den Pfad, den wir einschließen möchten, und den Host, auf dem er sich befindet. Hier ist eine typische Konfiguration, die die Verzeichnisse /home/, /etc/ und /usr/local/ auf localhost als Teil der Sicherungen umfasst:

backup /home/      localhost/
backup /etc/       localhost/
backup /usr/local/ localhost/

Ausschließen und Einschließen von Dateien aus Backups

Genau wie bei der direkten Verwendung von rsync möchten wir möglicherweise bestimmte Dateien aus unseren Backups ausschließen oder explizit einbeziehen. Um Einschluss- und Ausschlussmuster bei der Verwendung von rsnapshot zu definieren, verwenden wir die include- und exclude-Direktiven und geben ein Muster pro Zeile an:

exclude <exclude-pattern>

Um ein Include-Muster anzugeben, würden wir auf ähnliche Weise schreiben:

include <include-pattern>

Als alternative Strategie können wir Include- und Excepted-Muster in dedizierten Dateien schreiben und dann den Pfad dieser Dateien als Werte der Direktiven include_file und exclude_file übergeben:

include_file /path/to/include/file
exclude_file /path/to/exclude/file

Überprüfen der Rsnapshot-Konfiguration

Nachdem wir die Rsnapshot-Konfigurationsdatei an unsere Anforderungen angepasst haben, möchten wir möglicherweise überprüfen, ob unsere Konfiguration syntaktisch gültig ist. Wir können dies mit dem Befehl configtest tun:

sudo rsnapshot configtest

Wenn alles wie erwartet verläuft, sollte der Befehl die folgende Meldung zurückgeben:

Syntax OK

Beachten Sie nochmals, dass in der Konfigurationsdatei rsnapshot nur Registerkarten verwendet werden sollten. Leerzeichen sind nicht erlaubt: Ihre Verwendung wird als Syntaxfehler gewertet.

Testen und Erstellen unseres ersten Backups

Um Rsnapshot dazu zu bringen, den Befehl auszugeben, den es beim Ausführen einer Sicherung ausführen würde, ohne sie tatsächlich durchzuführen, können wir die Option -t verwenden, wie im folgenden Beispiel:

sudo rsnapshot -t daily

Der Befehl sollte eine Ausgabe zurückgeben, die der folgenden ähnelt:

echo 6080 > /var/run/rsnapshot.pid 
mkdir -m 0755 -p /snapshots/daily.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /home/ /snapshots/daily.0/localhost/ 
mkdir -m 0755 -p /snapshots/daily.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc/ \
    /snapshots/daily.0/localhost/ 
mkdir -m 0755 -p /snapshots/daily.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local/ /snapshots/daily.0/localhost/ 
touch /snapshots/daily.0/

Um unsere erste Sicherung tatsächlich zu erstellen, lassen wir einfach die Option -t weg, also würden wir ausführen, um unsere erste tägliche Sicherung zu erstellen:

sudo rsnapshot daily

Sobald die Sicherung abgeschlossen ist, wird ein Verzeichnis erstellt, das sich auf unsere erste tägliche Sicherung unter dem Snapshot-Stammverzeichnis bezieht:

/snapshots/
└── daily.0
    └── localhost
        ├── etc
        ├── home
        └── usr

Schauen wir uns nun an, was passieren würde, wenn wir unser zweites tägliches Backup erstellen würden:

sudo rsnapshot -t daily

Der Befehl gibt die folgende Ausgabe zurück:

bin/cp -al /snapshots/daily.0 /snapshots/daily.1 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /home/ /snapshots/daily.0/localhost/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc/ \
    /snapshots/daily.0/localhost/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local/ /snapshots/daily.0/localhost/ 
touch /snapshots/daily.0/

Wie Sie sehen können, wird zuerst die Sicherung des daily.0-Verzeichnisses als daily.1 kopiert, indem cp mit den Optionen -a und -l ausgeführt wird: Ersteres wird benötigt, um alle Dateiberechtigungen und Besitzverhältnisse zu erhalten, während letzteres dafür sorgt, dass Dateien fest verknüpft werden, anstatt kopiert zu werden, um Speicherplatz zu sparen. Das neue Backup verwendet das ursprüngliche Verzeichnis daily.0 als Ziel, daher wird es immer der neueste Snapshot sein.

Erstellen einer Sicherung eines Remote-Computers

Wir können Rsnapshot verwenden, um inkrementelle Backups von Remote-Rechnern über SSH durchzuführen und eine "Pull"-Backup-Strategie zu implementieren: Anstatt dass Clients Dateien auf den Backup-Server übertragen, verbindet sich der Server mit den Clients und führt die Backups durch, indem er Dateien von ihnen "zieht".

Das erste, was wir tun müssen, um einen Remote-Rechner zu sichern, ist sicherzustellen, dass die Direktive cmd_ssh existiert und in der Konfigurationsdatei rsnapshot unkommentiert ist. Der Wert der Direktive ist der Pfad der ausführbaren Datei des SSH-Clients, die normalerweise als /usr/bin/ssh installiert wird:

cmd_ssh /usr/bin/ssh

Nehmen wir nun an, wir möchten den Inhalt des Verzeichnisses /etc eines Remote-Rechners mit der IP 192.168.122.49 sichern und uns als "ubuntu"-Benutzer anmelden. Folgendes würden wir in die Konfigurationsdatei rsnapshot schreiben:

backup ubuntu@192.168.122.49:/etc client0

Wobei "client0" nur die Kennung des Computers ist (es kann alles sein). Damit die Sicherung erfolgreich ist, sollte ein funktionierender SSH-Server auf dem Ziel ausgeführt werden, und der öffentliche Schlüssel, den wir für die Verbindung verwenden möchten, muss bereits autorisiert sein.

Schlüsse

Rsnapshot ist ein kostenloses Open-Source-Dienstprogramm, das als Wrapper um Rsync fungiert, um inkrementelle Backups durchzuführen. In diesem Tutorial haben wir gelernt, wie man rsnapshot auf einigen der am häufigsten verwendeten Linux-Distributionen installiert und konfiguriert. Wir haben erfahren, wie Sie die Verzeichnisse angeben, die auf lokalen und Remotecomputern gesichert werden sollen, wie Sie eine Aufbewahrungsrichtlinie einrichten und wie Sie angeben, wo Momentaufnahmen gespeichert werden sollen.

Verwandte Artikel: