restic-backup-suite: Installation
Installation von restic-backup-suite: Voraussetzungen, install.sh, Passwort-Datei, SFTP-Zugang, manuelle Nutzung ohne Installer, Aktualisierung und Deinstallation.
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.shund erst danach/etc/restic/config.sh. Mit--configgibst 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.
- Dedizierten Schlüssel erzeugen, zum Beispiel
ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519_backup -N "". - Den öffentlichen Schlüssel auf dem Zielserver hinterlegen.
SSH_KEY_FILE,SSH_HOST,SSH_HOSTNAME,SSH_PORTundSSH_USERinconfig.shsetzen.- Den Host-Key des Zielservers in die
known_hostsvon root aufnehmen, zum Beispiel mitssh-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_FILEsteht in der Vorlage, wird aber von keinem Script ausgewertet. Trage den Host-Key in die Standard-known_hostsein.
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/resticsamt allem Inhalt gelöscht. Liegt dort Deine Passwort-Datei (so in der Vorlage), ist sie danach weg. Sichere sie vorher.