Skip to content

Backup Timer

Konfiguracja

Instrukcja opisuje konfigurację usługi systemd oraz timera dla wykonywania backupów przy użyciu Restic.

Założenia:

  • Skrypt backupu znajduje się w /srv/config/scripts/backup-restic.sh
  • Backup uruchamiany jest z poziomu hosta
  • Backup obejmuje dumpy baz danych, snapshot oraz retencję

Tworzenie usługi systemd

Usługa odpowiada za jednorazowe uruchomienie procesu backupu Restic wraz z wymaganymi zależnościami systemowymi.

Tworzymy plik usługi:

sudo micro /etc/systemd/system/restic-backup.service

W pliku umieszczamy:

restic-backup.service
[Unit]
Description=Restic backup (DB dumps + snapshot + retention)
Wants=network-online.target
After=network-online.target docker.service
Requires=docker.service

[Service]
Type=oneshot
User=root
Group=root

ExecStart=/srv/config/scripts/backup-restic.sh

NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=false
ReadWritePaths=/srv/backups /srv/docker /run/lock /run/docker.sock

TimeoutStartSec=6h
Nice=10
IOSchedulingClass=best-effort
IOSchedulingPriority=6

[Install]
WantedBy=multi-user.target

Testowanie

Ręczne uruchomienie:

sudo systemctl start restic-backup.service

Sprawdzamy czy po starcie tworzy się katalog runs:

sudo ls -lt /srv/backups/restic/runs | head

Tworzenie timera systemd

Timer odpowiada za cykliczne uruchamianie usługi backupu zgodnie z harmonogramem.

Tworzymy plik timera:

sudo micro /etc/systemd/system/restic-backup.timer

W pliku umieszczamy:

restic-backup.timer
[Unit]
Description=Daily restic backup at 04:00

[Timer]
OnCalendar=*-*-* 04:00:00
Persistent=true
RandomizedDelaySec=5m
AccuracySec=1m
Unit=restic-backup.service

[Install]
WantedBy=timers.target

Aktywacja usługi i timera

Przeładowujemy konfigurację systemd:

sudo systemctl daemon-reload

Aktywujemy timer:

sudo systemctl enable --now restic-backup.timer

Sprawdzamy status:

systemctl status restic-backup.timer

Obsługa

Zmiana harmonogramu

Zmiana godzin wykonywania backupu realizowana jest przez edycję plików timerów.

Edytujemy plik:

  • /etc/systemd/system/restic-backup.timer

Po wprowadzeniu zmian przeładowujemy konfigurację i restartujemy timery:

sudo systemctl daemon-reload
sudo systemctl restart restic-backup.timer

Podgląd logów

Logi backupu dostępne są przez journald:

journalctl -u restic-backup.service