Restic zerlegt, dedupliziert, verschlüsselt und speichert Daten entweder in einem lokalen Verzeichnis, per SFTP auf einem entfernten Rechner oder bei diversen Cloud-Anbietern.
Die Software besteht aus genau einem Programm und ein paar Handbuchseiten.
apt install restic
Auf dem Zielsystem legen wir einen Benutzer an, der die verschlüsselten Daten entegegen nimmt.
adduser --system --group --home /srv/restic restic
Damit wir einen passwortfreien Zugriff per
SSH
bekommen, hinterlegen wir dort den öffentlichen Schlüssel des
Administrators unter /srv/restic/.ssh/authorized_keys
.
Den Zielpfad und das zugehörige Passwort kennt nur das
zu sichernde Quellsystem.
/etc/restic.envRESTIC_REPOSITORY="sftp:restic@ilvermorny:/srv/restic/durmstrang" RESTIC_PASSWORD="Password"
Ein Timer sichert täglich alle wichtigen Datenverzeichnisse und Datenbanken.
/etc/systemd/system/restic-backup.service[Unit] Description=Restic backup service [Service] Type=oneshot EnvironmentFile=/etc/restic.env ExecStart=/usr/bin/restic backup --tag timer /home /srv ExecStart=/usr/bin/sh -c "su postgres -c pg_dumpall | /usr/bin/restic backup \ --stdin --stdin-filename postgres.dump --tag postgres" ExecStartPost=/usr/bin/restic forget --tag timer \ --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --keep-yearly 3
und
/etc/systemd/system/restic-backup.timer[Unit] Description=Daily backup with restic [Timer] OnCalendar=daily Persistent=true [Install] WantedBy=timers.target
Ein weiterer Timer räumt nicht mehr benötigte Brocken auf. Es genügt aber, wenn diese vergleichswiese teure Operation monatlich ausgeführt wird.
/etc/systemd/system/restic-prune.service[Unit] Description=Restic pruning service [Service] Type=oneshot EnvironmentFile=/etc/restic.env ExecStart=/usr/bin/restic prune
und
/etc/systemd/system/restic-prune.timer[Unit] Description=Monthly restic repository pruning [Timer] OnCalendar=monthly Persistent=true [Install] WantedBy=timers.target
Schließlich initialisieren wir das Depot und aktivieren die Wecker.
. /etc/restic.env export RESTIC_REPOSITORY export RESTIC_PASSWORD restic init systemctl daemon-reload systemctl enable --now restic-backup.timer systemctl enable --now restic-prune.timer