A Borg kitűnő szoftver, de a backup automatizálása elég nehézkes vele. Ezért van szükségünk a Borgmaticra is, annak csak a nagyon egyszerű konfigját kell szerkeszteni.
Telepítés
Mindkét csomag elérhető repóból, de Debianon jobban járhatunk pip-pel a Borgmaticnál és a Borgnál is.
$ # Debian
# apt install borgbackup borgmatic
$ # openSUSE
# zypper in borgbackup borgmatic
Így installálhatjuk a borgmaticot ~/.local/bin/
mappába:
# apt install python3-venv python3-pip
$ pip3 install --user --upgrade borgmatic
Generáljunk konfigot, majd szerkesszük. Az alapműködéshez csak minimális módosítások kellenek (location/source_directories, location/repositories, storage/encryption_passphrase).
$ generate-borgmatic-config --destination ~/.config/borgmatic.d/laravel_app.yml
$ nano ~/.config/borgmatic.d/laravel_app.yml
Példának egy működő konfig:
location:
source_directories:
- /srv/www/laravel_app/storage/app
- /srv/www/laravel_app/storage/logs
repositories:
- uXXXXXX-subX@uXXXXXX.your-storagebox.de:laravel_app
storage:
encryption_passphrase: hr7iv9MiexuV4uNga8yce4AekQeb9xaChae1peuC
ssh_command: ssh -p23 -i/home/myuser/.ssh/storagebox
retention:
keep_daily: 8
keep_weekly: 6
keep_monthly: 12
Hozzuk létre a repót a konfigjának szerkesztése után. A távoli szerverhez legyen jelszómentes SSH-hozzáférésünk. A távoli repókat mindig encrypteljük, repokey esetén szükségünk van az általunk megadott passphrase mellett a generált kulcsra is, ezért azt exportáljuk, és tegyük el biztonságos helyre.
$ borgmatic --config ~/.config/borgmatic.d/laravel_app.yml init --encryption repokey
$ borg key export ssh://uXXXXXX-subX@uXXXXXX.your-storagebox.de:23/./laravel_app borg-laravel_app.key
A borgmatic három parancsot is futtat parancs nélküli indításkor: elkészül a backup (create), plusz lefut a repó tisztítása (prune) és ellenőrzése (check). Elég paraméter nélkül futtatni, de megadhatunk konfigot (config flag), listázhatjuk a lépéseket (verbosity flag) és a változott fájlokat (files flag):
$ borgmatic --config ~/.config/borgmatic.d/laravel_app.yml --verbosity 1 --files
Megadhatunk mappát is több konfig egymás utáni futtatásához. Továbbá jó tudni, hogy a ~/.config/borgmatic.d/
(root: /etc/borgmatic.d/
) mappában tárolt konfigok mind lefutnak paraméter nélküli futtatáskor. Ha minden működik, akkor létrehozhatunk neki systemd timert laptopon:
$ URL=https://projects.torsion.org/borgmatic-collective/borgmatic/raw/branch/master/sample/systemd
$ wget $URL/borgmatic.service -P ~/.config/systemd/user/
$ wget $URL/borgmatic.timer -P ~/.config/systemd/user/
$ systemctl --user --now enable borgmatic.timer
$ systemctl --user list-timers borgmatic
Vagy cronjobot (/etc/cron.d/borgmatic
) szerveren:
45 3 * * * myuser PATH=$PATH:/usr/bin:/usr/local/bin /home/myuser/.local/bin/borgmatic --verbosity -1 --syslog-verbosity 1
Szokásos műveletek
Információk egy repóról (konfig nélkül mindről):
$ borgmatic --config ~/.config/borgmatic.d/laravel_app.yml info
Egy repó (konfig nélkül mind) minden archívumának listája:
$ borgmatic --config ~/.config/borgmatic.d/laravel_app.yml list
Ha azonnali kézi backupra van szükség:
$ borgmatic --config ~/.config/borgmatic.d/laravel_app.yml create
Visszaállítás
Így nyerhetünk ki egy vagy több fájlt a backup repóból:
$ borgmatic --config ~/.config/borgmatic.d/laravel_app.yml extract --archive latest --path path/file1 path/file2 --destination /tmp
Latest helyett megadhatunk a listából egy archívumnevet (archive flag). A path flag opcionális, nélküle mindent kinyerünk az archívumból abba a mappába, ahol állunk. Opcionálisan a célmappát is megadhatjuk (destination flag).
Szolgáltatók
Minden lényeges fájlról lennie kéne biztonsági mentésnek, és ideális esetben külső helyszínen elhelyezve, avagy divatszóval: a felhőben. Ha nincs saját szerver vagy annak nem elég nagy a tárhelye, e célra léteznek olcsóbb megoldások. Fontos: a távoli gépen is szükség van Borgra, így nem használhatunk bármit.
- BorgBase: 10 GB és 2 repó ingyen, 100 GB és 10 repó évi bruttó 10k HUF.
- rsync.net: 100 GB és korlátlan számú repó évi bruttó 7,5k HUF.
- Hetzner Storage Box: 1 TB tárhely (BX11) sftp, scp, samba, borg, rsync támogatással, alfiókokkal évi bruttó 16k HUF.
Az utóbbi esetében minden backupolt gépnek hozzunk létre külön alfiókot bekapcsolt SSH-val a Hetzner Robot felületen. Majd így inicializáljuk a jelszómentes kapcsolatot egy backupolt gép shelljében:
$ TF=storagebox_authorized_keys
$ # ha adtunk már hozzá kulcsokat, akkor előbb letöltjük e fájlt
$ echo "get .ssh/authorized_keys $TF" | sftp uXXXXXX-subX@uXXXXXX.your-storagebox.de
$ # ha nem, akkor itt létrejön
$ cat ~/.ssh/storagebox.pub >> $TF
$ # feltöltjük
$ echo -e "mkdir .ssh \n chmod 700 .ssh \n put $TF .ssh/authorized_keys \n chmod 600 .ssh/authorized_keys" | sftp uXXXXXX-subX@uXXXXXX.your-storagebox.de
$ # tesztelés
$ sftp -P23 -i/home/myuser/.ssh/storagebox uXXXXXX-subX@uXXXXXX.your-storagebox.de
$ # takarítás
$ rm $TF
Ha még nincs kulcs, hozzunk létre egyet.