Backup ist eines der wichtigsten Dinge in jeder Branche, und Sie suchen vielleicht nach der zuverlässigsten Backup-Lösung. Warum versuchen Sie es nicht mit Restic Backup unter Linux?
Restic ist eine sichere, schnelle und zuverlässige Backup-Lösung. Und in diesem Tutorial erfahren Sie, wie Sie das Restic-Backup-System auf einem Linux-Server einrichten.
Lesen Sie weiter und verlieren Sie nie wieder Ihre Daten!
Voraussetzungen
Dieses Tutorial wird eine praktische Demonstration sein. Um mitzumachen, stellen Sie sicher, dass Sie Folgendes haben:
- Zwei Linux-Server – Dieses Tutorial verwendet zwei Debian 11-Server namens server1 und Backup-Server .
- Ein Nicht-Root-Benutzer mit sudo-Berechtigungen.
Restic unter Linux installieren
Restic speichert Daten im verschlüsselten Repository, und jedes Mal, wenn Sie Daten zum Repository hinzufügen, erstellt Restic automatisch einen neuen Snapshot. Aber bevor Sie die Vorteile des Restic-Backup-Dienstprogramms nutzen können, müssen Sie zunächst Restic auf Ihrem Computer installieren.
1. Öffnen Sie Ihr Terminal und melden Sie sich bei server1
an Maschine.
2. Führen Sie als Nächstes wget
aus Befehl unten, um die Restic-Binärdatei herunterzuladen. Zum jetzigen Zeitpunkt ist die neueste Version von Restic v0.12.1.
wget https://github.com/restic/restic/releases/download/v0.12.1/restic_0.12.1_linux_amd64.bz2
3. Führen Sie die folgenden Befehle aus, um restic_0.12.1_linux_amd64.bz2
zu extrahieren Datei und überprüfen Sie die restic_0.12.1_linux_amd64
Binärdatei existiert.
# Extract restic_0.12.1_linux_amd64.bz2
bzip2 -dv restic_0.12.1_linux_amd64.bz2
# List the files to verify restic_0.12.1_linux_amd64 exists
ls
4. Führen Sie nun den chmod
aus Befehl, um den restic_0.12.1_linux_amd64
zu erstellen ausführbare Datei, benennen Sie sie dann um und verschieben Sie sie in den Ordner /usr/bin/restic
Verzeichnis.
An dieser Stelle können Sie jetzt den restic-Befehl auf Ihrem Server ausführen.
# Make Restic file executable
chmod +x restic_0.12.1_linux_amd64
# Installing Restic
mv restic_0.12.1_linux_amd64 /usr/bin/restic
5. Führen Sie restic
aus Befehl unten, um die Bash-Vervollständigung für Restic zu generieren. Dadurch können Nutzer den restic
ganz einfach ausführen Befehl.
restic generate --bash-completion /etc/bash_completion.d/restic
6. Führen Sie zuletzt den folgenden Befehl aus, um die Bash-Vervollständigung in Ihrer aktuellen Terminalsitzung neu zu laden, und führen Sie dann restic
aus Befehl und drücken Sie TAB um verfügbare Optionen für restic
anzuzeigen Befehl.
Führen Sie zuletzt die folgenden Befehle aus, um die Bash-Vervollständigung in Ihrer aktuellen Terminalsitzung neu zu laden. Geben Sie restic ein und drücken Sie die TAB-TASTE, um verfügbare Optionen für den restic-Befehl anzuzeigen.
# reload bash completion
source /etc/profile.d/bash_completion.sh
# verify restic command
restic
Sie sollten alle verfügbaren Optionen des restic-Befehls sehen, wie unten gezeigt.
Einrichten eines Sicherungsservers
Jetzt, da Sie Restic auf server1
installiert haben Maschine ist der nächste Schritt die Einrichtung des backup-server
, damit Sie Ihre Daten über das SFTP-Protokoll sichern können.
Standardmäßig ermöglicht Ihnen Restic, Daten im lokalen Verzeichnis, auf dem Remote-Server und im SFTP-Protokoll zu sichern. Mit Restic können Sie auch Daten auf Cloud-Backup-Diensten von Drittanbietern wie Amazon S3, Azure Blog Storage, Backblaze B2 und Google Cloud Storage sichern.
1. Öffnen Sie ein neues Terminal und melden Sie sich bei backup-server
an Maschine.
2. Führen Sie als Nächstes den folgenden Befehl aus, um einen neuen Benutzer mit dem Namen johndoe
zu erstellen und richten Sie ein Passwort ein.
# create new user
useradd -m -s /bin/bash johndoe
# setup the password
passwd johndoe
3. Führen Sie jeden der folgenden Befehle aus, um ein neues Sicherungsverzeichnis zu erstellen (/srv/backup
) für Restic und ändern Sie den Eigentümer (chown
) an johndoe
Benutzer und Gruppe. Dieses Verzeichnis speichert alle Sicherungsdaten von server1
Maschine.
# create new backup directory
mkdir -p /srv/backup
# change ownership of the backup directory
sudo chown -R johndoe:johndoe /srv/backup
4. Wechseln Sie nun zu server1
Maschine und führen Sie den folgenden Befehl aus, um einen SSH-Schlüssel zu generieren.
Anstelle der passwortbasierten Authentifizierung entscheiden Sie sich für die schlüsselbasierte Authentifizierung. Ein SSH-Schlüssel ist unerlässlich, insbesondere wenn Sie ein automatisches Backup mit einem Shell-Skript einrichten oder Cron-Jobs verwenden.
ssh-keygen
Drücken Sie die EINGABETASTE bei den folgenden Eingabeaufforderungen, wie unten gezeigt. Dadurch wird der Speicherort Ihres SSH-Schlüssels auf das Standardverzeichnis (~/.ssh) festgelegt und das Passwort für Ihren privaten SSH-Schlüssel deaktiviert.
An dieser Stelle befinden sich im Verzeichnis ~/.ssh die Dateien id_rsa (privater SSH-Schlüssel) und id_rsa.pub (Ihr öffentlicher Schlüssel).
5. Führen Sie ls
aus Befehl unten, um zu überprüfen, ob die id_rsa und id_rsa.pub Dateien existieren im ~/.ssh
Verzeichnis.
ls ~/.ssh/
6. Führen Sie als Nächstes ssh-copy-id
aus Befehl unten, um den öffentlichen SSH-Schlüssel auf backup-server
hochzuladen . In dieser Demo ist der backup-server
verwendet den Benutzernamen johndoe
und die IP-Adresse 172.16.1.150
.
ssh-copy-id [email protected]
Wenn der Upload abgeschlossen ist, erhalten Sie die Meldung Anzahl der hinzugefügten Schlüssel:1 auf Ihrem Terminal.
7. Führen Sie zuletzt den ssh
aus Befehl unten, um den backup-server
zu bestätigen und sich mit ihm zu verbinden .
ssh [email protected]
Beachten Sie, dass Sie sich automatisch ohne Passwortauthentifizierung beim Backup-Server angemeldet haben.
Initialisieren eines neuen Repositorys
Sie haben jetzt den Restic-Sicherungsserver konfiguriert, daher besteht der nächste Schritt darin, ein neues Repository zu initialisieren. Restic speichert Backup-Daten in einem Repository und jede Backup-Aktion erstellt einen neuen Snapshot in diesem Repository.
1. Führen Sie restic
aus Befehl unten zum Initialisieren (init
) ein Repository (-r
) über das SFTP-Protokoll.
restic -r sftp:[email protected]:/srv/backup init
2. Geben Sie ein starkes Passwort für das Repository ein und bestätigen Sie das Passwort. Merken Sie sich das Passwort, da Sie es zum Entschlüsseln Ihrer Sicherungsdaten verwenden.
Wie unten gezeigt, wird das neue Repository (a9073b62d0) auf dem SFTP-Server (sftp:[email protected]:/srv/backup) erstellt.
3. Führen Sie zuletzt den restic
aus Befehl unten, um das Repository zu überprüfen. Sie werden aufgefordert, das Passwort einzugeben, das Sie sich zuvor für das Repository notiert haben (Schritt zwei).
restic -r sftp:[email protected]:/srv/backup check
Wenn kein Fehler vorliegt, erhalten Sie die unten gezeigte Meldung, dass keine Fehler gefunden wurden.
Sichern von Daten in einem Repository
Sie haben jetzt das Repository mit dem SFTP-Server auf dem backup-server
initialisiert . Aber wie sichert man Daten mit Restic? Sie sichern Daten von server1
zum Repository im backup-server
.
1. Führen Sie restic
aus Befehl unten, um die Daten von /var/www/wordpress
zu sichern Verzeichnis zum Repository.
restic -r sftp:[email protected]:/srv/backup backup /var/www/wordpress
Geben Sie das Passwort für das Repository ein, und wenn der Sicherungsvorgang abgeschlossen ist, erstellt Restic den Snapshot (736949a9), wie unten gezeigt.
2. Führen Sie als Nächstes den folgenden Befehl aus, um alle snapshots
aufzulisten .
restic -r sftp:[email protected]:/srv/backup snapshots
Stellen Sie sicher, dass der Snapshot (736949a9) in der Liste verfügbar ist, wie unten gezeigt
3. Führen Sie den folgenden Befehl aus, um alle Dateien aufzulisten (ls
) auf dem Snapshot (736949a9
).
restic -r sftp:[email protected]:/srv/backup ls 736949a9
Sie sehen die Liste der Dateien auf dem Snapshot (736949a9), bei denen es sich um die Sicherungsdaten aus dem Verzeichnis /var/www/wordpress/ handelt.
Außerdem können Sie den folgenden Befehl ausführen, um mehrere Verzeichnisse (/var/www/wordpress und /var/www/html) im selben Repository zu sichern.
restic -r sftp:[email protected]:/srv/backup backup /var/www/wordpress /var/www/html
Beachten Sie unten, dass Restic einen neuen Snapshot (7b6e321e) erstellt hat.
4. Führen Sie nun jeden der folgenden Befehle aus, um alle Snapshots, Statistiken von Sicherungsdateien und den Unterschied zwischen zwei Snapshots aufzulisten (736949a9
und 7b6e321e
).
# checking list snapshots
restic -r sftp:[email protected]:/srv/backup snapshots
# show stats of repository
restic -r sftp:[email protected]:/srv/backup stats
# checking different between two snapshots
restic -r sftp:[email protected]:/srv/backup diff 736949a9 7b6e321e
Unten haben die Snapshots 736949a9 und 7b6e321e die gleichen Sicherungsdaten (/var/www/wordpress). Beachten Sie, dass ihre Dateigrößen im Repository ebenfalls gleich sind, da Restic nur Dateiänderungen sichert, wodurch Restic schnell und effizient wird.
Ausschließen von Dateien in Backup-Prozessen
Das Sichern von Daten ist praktisch, aber wie schließen Sie unnötige Daten aus? Mit Restic können Sie Dateien/Verzeichnisse mit dem --exclude-file
ausschließen Option während des Sicherungsvorgangs.
Der --exclude-file
Option kann Junk-Dateien wie Protokolldateien ausschließen, wodurch der Sicherungsvorgang schneller und sauberer wird.
1. Führen Sie den folgenden Befehl aus, um ein neues Verzeichnis mit dem Namen /opt/backup
zu erstellen um die gesicherten Dateien zu speichern.
mkdir -p /opt/backup
2. Erstellen Sie als Nächstes eine neue Datei (/opt/backup/excludes.txt
) mit Ihrem bevorzugten Texteditor und füllen Sie die folgende Konfiguration aus.
Die folgende Konfiguration weist Restic an, Dateien mit unterschiedlichen Dateitypen auszuschließen.
# excludes files .zip
*.tar.gz
# excludes directory logs
logs
# exclude .txt files on the directory data
data/*.txt
3. Führen Sie den folgenden Befehl aus, um Daten von /var/www/html zu sichern Verzeichnis in das Repository (-r
). Die --exclude-files
Option weist Restic an, Dateien und Verzeichnisse auszuschließen, die in exludes.txt aufgeführt sind Datei.
restic -r sftp:[email protected]:/srv/backup backup /var/www/html --exclude-file=/opt/backup/excludes.txt
Unten wird der neue Backup-Snapshot ca99be01 von Restic erstellt, mit Ausnahme der Dateien, die Sie in der excludes.txt angegeben haben Datei.
4. Führen Sie nun den folgenden Befehl aus, um die Liste der Dateien zu überprüfen (ls
) auf dem Snapshot ca99be01
.
restic -r sftp:[email protected]:/srv/backup ls ca99be01
Sie sehen alle gesicherten Dateien außer denen, die Sie in der Konfigurationsdatei definiert haben (excludes.txt ).
5. Führen Sie abschließend tree
aus Befehl unten, um zu überprüfen, ob das Ausschließen von Daten mit Restic funktioniert.
tree /var/www/html/
Wie Sie unten sehen, enthält das Verzeichnis /var/www/html Textdateien, aber Restic hat sie nicht von der Sicherung ausgeschlossen.
Snapshots aus dem Repository entfernen
In den meisten Fällen benötigen Sie höchstens zwei oder drei Versionen von Snapshots. Warum also nicht die älteren Snapshots entfernen? Zum Entfernen von Snapshots müssen Sie die ID des Snapshots kennen, überprüfen Sie also zuerst die Liste der Snapshots.
1. Führen Sie den folgenden Befehl aus, um alle Snapshots im Repository aufzulisten.
restic -r sftp:[email protected]:/srv/backup snapshots
Wählen Sie eine ID des zu entfernenden Snapshots aus (736949a9).
2. Führen Sie als Nächstes die folgenden Befehle aus, um (forget
) spezifischer Schnappschuss (736949a9
) und seine verbleibenden Daten aus dem Repository.
# Removes snapshot only
restic -r sftp:[email protected]:/srv/backup forget 736949a9
# Removes remaining data from repository
restic -r sftp:[email protected]:/srv/backup prune
3. Führen Sie den folgenden Befehl aus, um einen --dry-run
auszuführen und sehen Sie, welche Snapshots entfernt werden (forget
) und welche zwei Snapshot-Versionen beibehalten werden (--keep-last 2
).
Vor dem Löschen von Snapshots wird immer ein Probelauf empfohlen, um zu vermeiden, dass wichtige Snapshots verloren gehen.
restic -r sftp:[email protected]:/srv/backup forget --keep-last 2 --prune --dry-run
4. Führen Sie den folgenden Befehl aus, um (forget
) alte Snapshot-Versionen und behalte die letzten beiden (--keep-last 2
) aus dem Repository.
restic -r sftp:[email protected]:/srv/backup forget --keep-last 2 --prune
5. Führen Sie abschließend den folgenden Befehl aus, um alle vorhandenen Snapshots aufzulisten.
restic -r sftp:[email protected]:/srv/backup snapshots
Sie können unten sehen, dass nur die letzten beiden Snapshot-Versionen übrig bleiben.
Wiederherstellen von Daten im Repository
Vielleicht haben Sie versehentlich wichtige Daten aus dem Repository entfernt. Wenn ja, wie bekommt man sie zurück? Glücklicherweise können Sie mit Restic Backup-Daten entschlüsseln und wiederherstellen, solange Sie die Snapshot-ID des Backups kennen.
1. Führen Sie restic
aus Befehl unten, um verfügbare Snapshots im Repository zu prüfen.
restic -r sftp:[email protected]:/srv/backup snapshots
Nachfolgend finden Sie ein Beispiel für Snapshots, die im Repository verfügbar sind. Notieren Sie sich die Snapshot-ID der wiederherzustellenden Sicherungsdaten.
2. Führen Sie als Nächstes die folgenden Befehle aus, um ein Wiederherstellungsverzeichnis zu erstellen (/opt/restore
) und stellen Sie Ihren Ziel-Snapshot wieder her (6b44ac32
) in dieses Wiederherstellungsverzeichnis.
# Create a restore directory
mkdir -p /opt/restore
# Restore snapshot data to the /opt/restore directory
restic -r sftp:[email protected]:/srv/backup restore 6b44ac32 --target /opt/restore
3. Führen Sie abschließend den ls
aus Befehl unten, um die wiederhergestellten Daten zu überprüfen.
ls /opt/restore/var/www/wordpress
Wie unten gezeigt, sehen Sie die Liste der aus dem Snapshot wiederhergestellten Dateien (6b44ac32).
Wiederherstellen bestimmter Dateien
Sie haben gerade verlorene Daten wiederhergestellt, aber was ist, wenn Sie nur eine bestimmte Datei wiederherstellen müssen? Mit Restic können Sie auf eine bestimmte Datei abzielen, indem Sie den --include
anhängen Option im restic
Befehl.
1. Führen Sie den folgenden Befehl aus, um ein Verzeichnis zu erstellen, das die spezifische Datei enthält, die aus einem Snapshot wiederhergestellt werden soll.
mkdir -p /opt/restore/specific
2. Führen Sie als Nächstes restic
aus Befehle unten, um ein bestimmtes Verzeichnis wiederherzustellen (/var/www/wordpress/wp-content
) und eine bestimmte Datei (wp-config.php
) aus dem Snapshot (6b44ac32
). Jeder Befehl legt das Zielverzeichnis für die Wiederherstellung auf /opt/restore/specific
fest Verzeichnis.
# restore specific directory wp-config
restic -r sftp:[email protected]:/srv/backup restore 6b44ac32 --target /opt/restore/specific --include /var/www/wordpress/wp-content
# restore specific file wp-config.php
restic -r sftp:[email protected]:/srv/backup restore 6b44ac32 --target /opt/restore/specific --include /var/www/wordpress/wp-config.php
3. Führen Sie zuletzt den ls
aus Befehl unten, um die wiederhergestellte Datei und das Verzeichnis im Verzeichnis (/opt/restore/specific
).
ls /opt/restore/specific/var/www/wordpress
Wenn die Wiederherstellung korrekt funktioniert hat, werden das Verzeichnis (wp-content) und die Datei (wp-config.php) aus dem Snapshot (6b44ac32) wiederhergestellt.
Automatische Datensicherung mit Restic und Cron
An diesem Punkt haben Sie bereits die grundlegende Verwendung des Restic-Backup-Tools gelernt. Aber da das manuelle Sichern von Daten mühsam sein kann, warum sollten Sie Daten auf Ihrem Linux-System automatisch sichern? Restic kann zusammen mit Cron Wunder vollbringen, wie z. B. die Automatisierung des Prozesses der Datensicherung.
1. Erstellen Sie eine neue Datei (/opt/backup/.secret
) mit Ihrem bevorzugten Editor und geben Sie das Passwort Ihres Repositorys ein. Diese Demo verwendet das Passwort ResticRepositoryPassword
für das Restic-Repository.
2. Führen Sie als Nächstes den folgenden Befehl aus, um die Berechtigung von /opt/backup/.secret
zu ändern Datei nach 600
. Der Berechtigungscode 600
gibt nur dem /opt/backup/.secret
Lese- und Schreibrechte Dateibesitzer.
chmod 600 /opt/backup/.secret
3. Führen Sie crontab
aus Befehl unten, um einen neuen Cron-Job zu erstellen. Die -u root
Die Option gibt an, dass der Cron-Job als Root-Benutzer ausgeführt wird.
crontab -u root -e
4. Wählen Sie Ihren bevorzugten Editor aus und die Cron-Konfigurationsdatei wird in diesem Editor geöffnet. Aber diese Demo verwendet den Nano Editor.
5. Füllen Sie abschließend die Cron-Konfiguration mit der folgenden Konfiguration, um die automatische Sicherung einzurichten und die Änderungen zu speichern.
Das folgende Skript führt Folgendes aus:
- Führen Sie
restic
aus Befehl alle1.AM
zum Sichern von Verzeichnissen (/var/www/wordpress
und/var/www/html
) an den Repository-SFTP-Server (sftp:[email protected]:/srv/backup
).
- Alten Snapshot automatisch löschen bei
2.AM
und behalten Sie die letzten beiden Versionen von Snapshots.
- Gibt (
--password-file
) die Datei (/opt/backup/.secret
), die Ihr Passwort für das Restic-Repository enthält, sodass Sie Ihr Passwort nicht in der Cron-Konfiguration fest codieren müssen.
# Runs daily backup at 1.AM
0 1 * * * restic --password-file /opt/backup/.secret -r sftp:[email protected]:/srv/backup backup --verbose /var/www/{wordpress,html}
# Runs every 2.AM, and always keeps the last 2 backup snapshots
0 2 * * * restic --password-file /opt/backup/.secret -r sftp:[email protected]:/srv/backup forget --keep-last 2 --prune
Schlussfolgerung
In diesem Tutorial haben Sie gelernt, wie Sie Restic unter Linux installieren und wie Sie Ihre Daten auf verschiedene Arten sichern, von Verzeichnissen bis hin zu bestimmten Dateien mit Snapshots. Abgesehen von der Datensicherung haben Sie entdeckt, dass Sie unerwartet verlorene Daten wiederherstellen können. Die Automatisierung spielt eine große Rolle bei der Sicherung Ihrer Daten, also lassen Sie die Cron-Jobs laufen, um Ihre Daten zu sichern.
An diesem Punkt sind Sie bereit, weitere Daten mit Restic zu sichern. Und warum nutzen Sie Ihr Backup nicht mithilfe von Tags, Filterrichtlinien und Backup-Cloud-Diensten?