home notes resume urls | about

Borgmatic

Skoro obiecałem to słowa trzeba dotrzymać.

Konfigurowałem ostatnio sobie możliwość zdalnej kopii zapasowej przy pomocy skryptu borgmatic, na serwerze w sieci lokalnej. Upłynęło trochę więcej czasu niż "ostatnio" więc muszę sobie przypomnieć pewne kroki.

Klient korzysta z tego skryptu do wykonania kopii zapasowej borgmatic. Na serwerze znowu postawiłem sobie kontener w dockerze. Na początek musimy wygenerować klucz ssh który posłuży do logowania bez hasła. W terminalu wystarczy wpisać:

$ ssh-keygen

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/username/.ssh/id_ed25519):
Created directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_ed25519
Your public key has been saved in /home/username/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:RLy4JBv7jMK5qYhRKwHB3af0rpMKYwE2PBhALCBV3G8 username@hostname
The key's randomart image is:
+--[ED25519 256]--+
|%oooo. ..        |
|== ..o.o.        |
|==  . +o..       |
|+ o o.ooE        |
|...  *.oS        |
| o..o ..         |
|o=.. +o          |
|+o*..+o          |
|+.o+. .          |
+----[SHA256]-----+

Dane wypełniamy tak jak nam pasuje. Ja zawsze staram się nazywać klucze wg tego do czego mają służyć - w tym przypadku po prostu borg lub borgmatic. Hasło sugeruje pozostawić puste jeśli nie chcemy go wpisywać przy każdym użyciu klucza. Zgodnie z opisem kontenera trzeba go przekopiować do katalogu borg/sshkeys/clients który musimy gdzieś utworzyć na naszej zdalnej maszynie oraz sprawdzić czy uprawnienia są okej:

$ mkdir -p borg/sshkeys/clients
$ chown 1000:1000 borg/sshkeys
$ cp ~/.ssh/my_machine.pub borg/sshkeys/clients/my_machine

Musimy pamiętać że nazwa pliku jest również nazwą naszego repozytorium!

Teraz musimy tylko wprowadzić odpowiednie zmiany w konfiguracji naszego klienta. U mnie adres serwera jest w domenie tower (domyślna dla Unraid). Wybrać ścieżki do katalogów które chcemy skopiować, wykluczyć te których nie chcemy, podać hasło do archiwum oraz ścieżkę do klucza i port na którym będziemy się łączyć:

$ sudo nano /etc/borgmatic/config.yaml
source_directories:
    - /home/user_name/
    - /etc

repositories:
    - path: ssh://borg@tower/./
      label: backupserver
patterns:
     - R /
     - '- /home/*/.cache'
     - '- /home/*/.local/share'
     - '- /home/*/.steam'
     - '- /home/*/Downloads'
     - '- /home//Cache'
     - '- /home/*/Videos'
     - '- /home/*/Music'
     - '- /home/*/Pictures'
     - '- /home/*/Public'
     - '- /home/*/Games'

encryption_passphrase: backup_password

ssh_command: ssh -i /home/user_names/.ssh/ssh_key_name -p 2222

Na koniec można ustawić ile i z jakiego okresu chcemy zachować archiwów. Gdy już wszystko mamy, zapisujemy plik i inicjujemy repozytorium oraz kolejne polecenie służy już do robienia kopii zapasowych:

$ sudo borgmatic init --encryption repokey
$ sudo borgmatic --verbosity 1 --list --stats

To chyba wszystko w tym temacie. Odsyłam do manuala skryptu aby się dowiedzieć więcej na temat poleceń z jakich można korzystać.



2024-12-19 czw 18:56 (updated: 2025-04-15 wto 23:08)

Emacs 30.1 (Org mode 9.7.11)