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