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.