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ć.