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.