Konfiguracja kopii zapasowych

Na tej stronie opisany jest sposób konfiguracji kopii zapasowych wybranych katalogów użytkownika z wykorzystaniem narzędzia restic.

Należy zacząć od wygenerowania danych dostępowych na stronie https://storage-panel.cloud.cyfronet.pl (panel zarządzania usługą)

Instalacja

Narzędzie restic jest dostępne w repozytoriach większości dystrybucji Linuxa.

Ubuntu:

sudo apt install restic

Fedora:

sudo dnf install restic

Na wariantach korzystających z menadżera paczek rpm-ostree :

rpm-ostree install restic

Konfiguracja

Najpierw należy utworzyć katalog na pliki konfiguracyjne narzędzia:

mkdir -p ~/.config/restic
chmod 700 ~/.config/restic

Następnie należy utworzyć główny plik konfiguracyjny ~/.config/restic/config .

AWS_ACCESS_KEY_ID oraz AWS_SECRET_ACCESS_KEY należy ustawić odpowiednio na wygenerowane w panelu wartości access_key oraz secret_key .

RESTIC_REPOSITORY ma postać s3:<endpoint>/<bucket> .

Należy również podać ścieżki do pliku z hasłem oraz listą backupowanych katalogów.

Przykład:

cat ~/.config/restic/config :

AWS_ACCESS_KEY_ID=s3p-cyfplgjkowalski
AWS_SECRET_ACCESS_KEY=qmLn0TspSZotYfJPfoWuEohes2lyrGgJOwgbEljk
RESTIC_REPOSITORY=s3:https://s3p.cloud.cyfronet.pl/jkowalski-backup
RESTIC_PASSWORD_FILE=/home/jkowalski/.config/restic/pass
RESTIC_BACKUP_DIRECTORIES_FILE=/home/jkowalski/.config/restic/directories

Nastepnie należy wygenerować oraz zapisać w pliku ~/.config/restic/pass hasło szyfrowania kopii zapasowych.

W pliku ~/.config/restic/directories należy umieścić listę backupowanych katalogów.

Przykład:

cat ~/.config/restic/directories :

/home/jkowalski/Documents
/home/jkowalski/Pictures
/home/jkowalski/Downloads
/home/jkowalski/.ssh

Procedura backupu będzie automatycznie uruchamiana przez timer systemd.

Utworzenie katalogu na pliki systemd użytkownika:

mkdir -p ~/.config/systemd/user

Unit file wywołujący polecenie backupu:

cat ~/.config/systemd/user/restic-backup.service :

[Unit]
Description=Restic backup

[Service]
Type=oneshot
EnvironmentFile=%h/.config/restic/config
ExecStart=restic unlock
ExecStart=restic backup --verbose --files-from ${RESTIC_BACKUP_DIRECTORIES_FILE}
ExecStart=restic forget --cleanup-cache --prune -H 240 -d 30 -w 52 -m 36 -y 10 -g "host"

Polecenie restic forget --cleanup-cache --prune -H 240 -d 30 -w 52 -m 36 -y 10 -g "host" usuwa stare kopie zapasowe przy zachowaniu ostatnich:

  • 240 kopii godzinnych
  • 30 kopii dziennych
  • 52 kopii tygodniowych
  • 36 kopii miesięcznych
  • 10 kopii rocznych

Timer systemd:

cat ~/.config/systemd/user/restic-backup.timer :

[Unit]
Description=Run backup 20m after boot and every 3h after

[Timer]
Persistent=false
OnBootSec=20m
OnUnitInactiveSec=3h
Unit=restic-backup.service

[Install]
WantedBy=timers.target

Inicjalizacja repozytorium oraz aktywacja timera

Ostatnim krokiem jest inicjalizacja repozytorium kopii zapasowych.

# załadowanie zmiennych środowiskowych z konfiguracją
export $(xargs < ~/.config/restic/config)

restic init

systemctl --user daemon-reload
systemctl --user enable --now restic-backup.timer
systemctl status --user restic-backup.timer

Test backupu

systemctl start --user restic-backup
systemctl status --user restic-backup

export $(xargs < ~/.config/restic/config)
restic snapshots

Reszta dokumentacji narzędzia, razem z instrukcją odzyskiwania danych z kopii zapasowej jest dostępna na stronie https://restic.readthedocs.io/en/stable/index.html.