Backup-Anleitung · 4 min read · Dec 10, 2025

Rsnapshot einrichten, Archivierung von Snapshots und Backup von MySQL-Datenbanken auf Debian

Rsnapshot einrichten, Archivierung von Snapshots und Backup von MySQL-Datenbanken auf Debian

Von Nedim Hadzimahmutovic < [email protected] >

Dieses Howto zeigt Ihnen, wie Sie Rsnapshot installieren und einrichten, die Archivierung von Snapshots aktivieren und wie Sie MySQL-Datenbanken auf Debian sichern.

Installieren Sie das Programm mit dem apt-get-Dienstprogramm:

apt-get install rsnapshot

Bearbeiten Sie die Konfigurationsdatei:

nano /etc/rsnapshot.conf

Setzen Sie snapshot_root auf den Pfad, wo Sie die Backups aufbewahren möchten:

snapshot_root   /var/cache/rsnapshot/

Richten Sie die Liste der Verzeichnisse/Dateien ein, die gesichert werden sollen.

backup  /etc/           localhost/

Backup-Intervalle

Dieser Abschnitt der Konfigurationsdatei wird nur verwendet, um Bezeichnungen für Intervalle zu definieren und wie viele Snapshots jeder Ebene aufbewahrt werden sollen. Wie oft die Snapshots erstellt werden, wird über cron konfiguriert und ausgeführt. Das Schlüsselwort interval wird von einem alphanumerischen Label gefolgt, gefolgt von einer Zahl, die angibt, wie viele Intervalle (Snapshots) aufbewahrt werden sollen. Die Intervallbezeichnungen müssen eindeutig und in aufsteigender Reihenfolge sein, das kleinste Intervall muss zuerst aufgeführt werden.

Im folgenden Beispiel wird nach 6 “stündlichen” Snapshots der älteste “stündliche” gelöscht. Der oberste Eintrag (in diesem Fall “stündlich”) wird aus der Quelle kopiert, während die verbleibenden Einträge einfach auf den neuesten Snapshot aus einer Ebene darüber verlinken.

Mit anderen Worten, um sechs Backups pro Tag (vierstündliches Intervall), sieben tägliche Backups (eine Woche) und vier wöchentliche Backups (einen Monat) zu behalten, geben Sie an:

interval        hourly  6
interval        daily   7
interval        weekly  4

Die Intervallbezeichnungen “hourly”, “daily”, “weekly” können geändert werden, um Ihren Bedürfnissen zu entsprechen, zum Beispiel “daysago”, “weeksago” und “monthsago”.

Jedes Mal, wenn rsnapshot hourly manuell oder über cron ausgeführt wird, wird ein neuer Snapshot erstellt, die alten werden rotiert und die 6 aktuellsten (hourly.0 - hourly.5) werden beibehalten.

Backup-Punkte

Beispiel eines Backup-Punkts in der Konfigurationsdatei:

backup      /etc/      localhost/ 

Backup-Punkte beginnen mit dem Wort backup, nach /etc/ folgt der vollständige Pfad des Verzeichnisses, das gesichert werden soll, und localhost ist ein Verzeichnis innerhalb von snapshot_root. Sie können localhost in etwas ändern, das mit dem Server assoziiert ist, wie den vollständig qualifizierten Domainnamen des Servers.

Zusätzlich zu vollständigen Pfaden im lokalen Dateisystem können Sie auch Remote-Systeme mit rsync über ssh sichern. Wenn Sie ssh installiert und aktiviert haben (über den Parameter cmd_ssh), können Sie einen Pfad wie folgt angeben:

backup      [email protected]:/etc/     example.com/

Bitte beachten Sie, dass Sie für den Root-Benutzer auf example.com die Schlüsselbasierte Anmeldung ohne Passphrasen aktiviert haben müssen, damit dies ordnungsgemäß funktioniert./

Backup-Skripte

Sie finden viele Beispiele im Verzeichnis utils, das sich auf Debian unter /usr/share/doc/rsnapshot/examples/utils/ befindet.

Backup-Skripte werden mit jedem niedrigsten Intervall ausgeführt.

Ausführen von Backups über Cron

Die Cron-Datei befindet sich unter

/etc/cron.d/rsnapshot

Der Standardinhalt:

# 0 */4     * * *   root    /usr/bin/rsnapshot hourly
# 30 3      * * *   root    /usr/bin/rsnapshot daily
# 0  3      * * 1   root    /usr/bin/rsnapshot weekly
# 30 2      1 * *   root    /usr/bin/rsnapshot monthly

Sie müssen die Zeilen auskommentieren, um die Backups zu aktivieren.

Die erste Zeile sagt cron, dass es cron-apt alle 4 Stunden ausführen soll, was den stündlichen Intervall-Einstellungen in der rsnapshot.conf entspricht.

Testkonfiguration:

Jedes Mal, wenn Sie eine Änderung in der Konfigurationsdatei vornehmen, führen Sie einen configtest durch:

rsnapshot configtest

BITTE BEACHTEN SIE DIE FOLGENDEN REGELN:

  • Die Konfigurationsdatei erfordert Tabs zwischen den Elementen, Leerzeichen stellen Argumente für Skripte dar.
  • Verzeichnisse erfordern einen abschließenden Schrägstrich, Beispiel:

richtig: /home/

falsch: /home

Archivierung von Snapshots

cp /usr/share/doc/rsnapshot/examples/utils/rsnaptar /usr/local/bin/

Stellen Sie sicher, dass Ihre Backup-Skripte dem Benutzer root gehören und von niemand anderem beschreibbar sind.

chown root.root /usr/local/bin/rsnaptar  
chmod o-w /usr/local/bin/rsnaptar

Bearbeiten Sie das Skript und setzen Sie die Verzeichnispfade:

nano /usr/local/bin/rsnaptar

Setzen Sie TAR_DIR auf den Pfad, wo der Snapshot archiviert wird, und SNAPSHOT_DIR auf den Ort, wo der tägliche Snapshot gespeichert ist:

TAR_DIR="/home/user/dvd_backup"
SNAPSHOT_DIR="/var/cache/rsnapshot/daily.0"

Bitte beachten Sie, dass der stündliche Zyklus abgeschlossen sein muss, damit der tägliche Snapshot erstellt werden kann.

Dieses Skript unterstützt die GPG-Verschlüsselung von Dateien. Um dies zu deaktivieren, kommentieren Sie die folgende Zeile in /usr/local/bin/rsnaptar aus:

GPG="/usr/bin/gpg"

Planung der Ausführung über Cron

nano /etc/cron.daily/rsnaptar

Fügen Sie hinzu:

#!/usr/bin/env bash
/usr/local/bin/rsnaptar [email protected]

Hinweise:

    • dieses Howto verwendet nicht die GPG-Option zur Verschlüsselung von Dateien. Wenn dies notwendig ist, kann ich das Howto aktualisieren, um die Dateiverschlüsselung für bessere Sicherheit einzuschließen,
    • standardmäßig wird das Skript eigenständig ausgeführt, kann jedoch geändert werden, um als backup_script über rsnapshot selbst ausgeführt zu werden,

Rsnapshot: Backup von MySQL-Datenbanken

Installieren Sie mysql-client, falls nicht installiert, dies stellt das mysqldump-Dienstprogramm bereit:

# apt-get install mysql-client
# cp /usr/share/doc/rsnapshot/examples/utils/backup_mysql.sh /usr/local/bin/

Stellen Sie sicher, dass Ihre Backup-Skripte dem Benutzer root gehören und von niemand anderem beschreibbar sind.

chown root.root /usr/local/bin/backup_mysql.sh  
chmod o-w /usr/local/bin/backup_mysql.sh

Dieses Skript ist nur dafür ausgelegt, alle Datenbanken in eine einzige Datei zu sichern.

Bearbeiten Sie das Skript:

nano /usr/local/bin/backup_mysql.sh

Ersetzen Sie

/usr/bin/mysqldump --all-databases > mysqldump_all_databases.sql

durch

/usr/bin/mysqldump --defaults-file=/etc/mysql/debian.cnf --all-databases > mysqldump_all_databases.sql

Wenn Sie eine einzelne Datenbank dumpen müssen, verwenden Sie die folgende Zeile:

/usr/bin/mysqldump --defaults-file=/etc/mysql/debian.cnf DATABASE > DATABASE.SQL

Skript zu Rsnapshot hinzufügen

Bearbeiten Sie die rsnapshot-Konfiguration:

nano /etc/rsnapshot.conf

Unter BACKUP POINTS / SCRIPTS fügen Sie Folgendes hinzu:

backup_script       /usr/local/bin/backup_mysql.sh  localhost/mysqldump/

Testen Sie die Konfiguration:

rsnapshot configtest
Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.