Markus Michalski FAQ

restic-backup-suite: Installation

Installation von restic-backup-suite: Voraussetzungen, install.sh, Passwort-Datei, SFTP-Zugang, manuelle Nutzung ohne Installer, Aktualisierung und Deinstallation.

English Version

Zurück zur Übersicht


Installation

Voraussetzungen

Voraussetzung Hinweis
Bash 4.4 oder neuer Alle Scripts nutzen Bash-Arrays und set -o nounset
restic Muss im PATH liegen. Das Backup ruft restic backup --compression max auf, die restic-Version muss also Kompression unterstützen
root Alle Scripts brechen ohne root mit This script must be run as root. ab
sftp Nur bei einem Repository mit sftp:-Präfix (Verbindungstest vor dem Backup)
docker Nur für Docker-Datenbank-Dumps und DOCKER_SERVICES_TO_STOP
mariadb-dump oder mysqldump sowie mariadb oder mysql Nur für MYSQL_BACKUP_ENABLED=true. Das Restore von SQL-Dumps braucht den Client mysql
/etc/cron.d Nur für den optionalen Cronjob des Installers

Mit dem Installer

git clone https://github.com/markus-michalski/restic-backup-suite.git
cd restic-backup-suite
sudo ./install.sh

Der Installer legt folgendes an:

Was Wo Rechte
Konfigurationsverzeichnis /etc/restic/ 700
Konfigurationsdatei (Kopie von config.example.sh, wird nie überschrieben) /etc/restic/config.sh 600
Aktuelle Vorlage /etc/restic/config.example.sh 640
Log-Verzeichnis /var/log/restic/ 750
Symlinks auf die Scripts /usr/local/bin/restic-backup, /usr/local/bin/restic-restore, /usr/local/bin/restic-inspect
Shell-Aliase /etc/profile.d/restic-aliases.sh 644

Die Symlinks zeigen auf die Scripts im geklonten Verzeichnis. Lösche oder verschiebe den Klon nach der Installation nicht.

Ist restic nicht installiert, zeigt der Installer Hinweise und fragt, ob er trotzdem fortfahren soll.

Liegt im Klon-Verzeichnis eine config.sh, hat sie Vorrang vor /etc/restic/config.sh. Die Scripts suchen zuerst <Script-Verzeichnis>/config.sh und erst danach /etc/restic/config.sh. Mit --config gibst Du die Datei explizit an.

Passwort-Datei anlegen

Der Installer erzeugt keine Passwort-Datei. Lege sie an und verweise in config.sh per RESTIC_PASSWORD_FILE darauf (Vorlage: /etc/restic/password.txt):

umask 077
printf '%s' 'dein-starkes-passwort' > /etc/restic/password.txt
chmod 400 /etc/restic/password.txt

Ohne dieses Passwort sind die Backups nicht lesbar. Bewahre es zusätzlich außerhalb des Servers auf. Siehe Sicherheit.

Konfiguration anpassen

sudo nano /etc/restic/config.sh

Alle Schlüssel stehen auf der Seite Konfiguration.

SFTP-Zugang vorbereiten

Nur nötig, wenn RESTIC_REPOSITORY mit sftp: beginnt.

  1. Dedizierten Schlüssel erzeugen, zum Beispiel ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519_backup -N "".
  2. Den öffentlichen Schlüssel auf dem Zielserver hinterlegen.
  3. SSH_KEY_FILE, SSH_HOST, SSH_HOSTNAME, SSH_PORT und SSH_USER in config.sh setzen.
  4. Den Host-Key des Zielservers in die known_hosts von root aufnehmen, zum Beispiel mit ssh-keyscan -p <Port> <Hostname> >> /root/.ssh/known_hosts.

backup.sh schreibt beim Lauf die SSH-Konfiguration selbst (siehe Technische Details) und testet die Verbindung mit sftp -o BatchMode=yes. Der Host-Key muss deshalb vorher bekannt sein, sonst schlägt der Test fehl.

SSH_KNOWN_HOSTS_FILE steht in der Vorlage, wird aber von keinem Script ausgewertet. Trage den Host-Key in die Standard-known_hosts ein.

Erster Lauf

sudo restic-backup --dry-run
sudo restic-backup

Lies vorher den Hinweis zu --dry-run auf der Seite Verwendung. Existiert das Repository noch nicht, initialisiert backup.sh es beim ersten Lauf automatisch.

Cronjob

sudo ./install.sh --cron

Details stehen unter Zeitplan.

Ohne Installer

git clone https://github.com/markus-michalski/restic-backup-suite.git
cd restic-backup-suite
cp config.example.sh config.sh
chmod 600 config.sh
sudo ./backup.sh --dry-run

Die Scripts lesen dann config.sh aus dem Klon-Verzeichnis. Aliase und Cronjob gibt es in diesem Fall nicht.

Aktualisieren

Aktualisiere den Klon (git pull). Die Symlinks zeigen auf diese Dateien, die neuen Scripts sind also sofort aktiv. Ein erneuter Aufruf von sudo ./install.sh überschreibt /etc/restic/config.sh nicht, erneuert aber config.example.sh, die Symlinks und die Aliase. Vergleiche neue Schlüssel in config.example.sh mit Deiner config.sh.

Deinstallieren

sudo ./install.sh --uninstall

Entfernt werden die drei Symlinks, /etc/profile.d/restic-aliases.sh und /etc/cron.d/restic-backup. Danach fragt der Installer, ob /etc/restic gelöscht werden soll. Das Log-Verzeichnis, das Repository und eine Passwort-Datei außerhalb von /etc/restic bleiben bestehen.

Antwortest Du auf die Frage mit y, wird /etc/restic samt allem Inhalt gelöscht. Liegt dort Deine Passwort-Datei (so in der Vorlage), ist sie danach weg. Sichere sie vorher.