Instalace a konfigurace BorgBackupu

Krok za krokem od instalace přes vytvoření prvního repozitáře až po automatizaci záloh pomocí borgmatic a systemd.

Instalace BorgBackupu

BorgBackup lze nainstalovat několika způsoby v závislosti na vašem operačním systému a preferencích. Nejjednodušší cestou je využití balíčkovacího systému vaší distribuce, ale k dispozici je i instalace přes pip (Python Package Index) nebo stažení předkompilovaného binárního souboru.

Instalace přes balíčkovací systém

Většina linuxových distribucí má BorgBackup v oficiálních repozitářích. Toto je doporučený způsob instalace, protože zajišťuje automatické aktualizace prostřednictvím systémového správce balíčků.

# Debian / Ubuntu
sudo apt install borgbackup

# Fedora
sudo dnf install borgbackup

# Arch Linux
sudo pacman -S borg

# openSUSE
sudo zypper install borgbackup

# macOS (Homebrew)
brew install borgbackup

Verze v repozitářích distribucí může být starší než poslední vydání. Pokud potřebujete nejnovější verzi, zvažte instalaci přes pip nebo stažení binárního souboru.

Instalace přes pip

Instalace přes pip je nezávislá na distribuci a vždy poskytuje nejnovější verzi. Doporučujeme provádět instalaci do virtuálního prostředí nebo použít pipx pro izolovanou instalaci.

# Instalace závislostí (Debian/Ubuntu)
sudo apt install python3-dev python3-pip libacl1-dev libssl-dev liblz4-dev libzstd-dev pkg-config

# Instalace BorgBackupu přes pip
pip install borgbackup

# Nebo pomocí pipx (doporučeno)
pipx install borgbackup

Stažení binárního souboru

BorgBackup poskytuje předkompilované binární soubory pro Linux a macOS, které nevyžadují žádné závislosti. Stačí stáhnout soubor, nastavit práva pro spuštění a přesunout ho do adresáře v PATH.

# Stažení binárního souboru (Linux x86_64)
wget https://github.com/borgbackup/borg/releases/download/1.2.8/borg-linux64

# Nastavení práv a přesun
chmod +x borg-linux64
sudo mv borg-linux64 /usr/local/bin/borg

# Ověření instalace
borg --version

Inicializace repozitáře

Před vytvořením první zálohy je nutné inicializovat repozitář — datovou strukturu, do které se budou ukládat archivy. Repozitář může být lokální (na disku) nebo vzdálený (na SSH serveru).

# Lokální repozitář se šifrováním (repokey)
borg init --encryption=repokey /cesta/k/repozitari

# Lokální repozitář bez šifrování
borg init --encryption=none /cesta/k/repozitari

# Vzdálený repozitář přes SSH
borg init --encryption=repokey user@server:/cesta/k/repozitari

# Repozitář s klíčem uloženým lokálně (bezpečnější)
borg init --encryption=keyfile /cesta/k/repozitari

Při inicializaci s šifrováním budete vyzváni k zadání hesla. Toto heslo je klíčové pro přístup k zálohám — bez něj nelze zálohy obnovit. Doporučujeme heslo bezpečně uložit, například v správci hesel. Po inicializaci byste měli také exportovat klíč příkazem borg key export a uložit ho na bezpečné místo pro případ ztráty.

Důležité upozornění Pokud ztratíte heslo k šifrovanému repozitáři a nemáte exportovaný klíč, vaše zálohy budou nenávratně ztraceny. Vždy exportujte klíč a uložte ho na bezpečné místo odděleně od repozitáře.

Vytvoření zálohy

Pro vytvoření zálohy slouží příkaz borg create. Archiv pojmenujete pomocí šablony, která obvykle obsahuje hostname a datum. Borg nabízí proměnnou {now} pro automatické vložení aktuálního data a času.

# Základní záloha domovského adresáře
borg create /cesta/k/repo::archiv-{now} ~/

# Záloha s kompresí zstd
borg create --compression zstd,3 /cesta/k/repo::archiv-{now} /home /etc

# Záloha s vyloučením adresářů
borg create --exclude '*.tmp' --exclude '/home/*/.cache' \
    /cesta/k/repo::archiv-{now} /home

# Záloha s průběhovým výpisem
borg create --progress --stats /cesta/k/repo::archiv-{now} /srv/data

# Vzdálená záloha přes SSH
borg create user@server:/repo::archiv-{now} /home /etc /var/www

Výpis archivů

Příkaz borg list zobrazí seznam archivů v repozitáři. Můžete také zobrazit obsah konkrétního archivu nebo filtrovat archivy podle vzoru.

# Seznam archivů v repozitáři
borg list /cesta/k/repo

# Obsah konkrétního archivu
borg list /cesta/k/repo::archiv-2024-01-15

# Detailní informace o archivu
borg info /cesta/k/repo::archiv-2024-01-15

# Informace o celém repozitáři
borg info /cesta/k/repo

Obnovení dat

Pro obnovení dat slouží příkaz borg extract, který extrahuje soubory z archivu do aktuálního adresáře. Můžete obnovit celý archiv nebo pouze vybrané soubory a adresáře.

# Obnovení celého archivu (do aktuálního adresáře)
cd /tmp/restore
borg extract /cesta/k/repo::archiv-2024-01-15

# Obnovení konkrétního souboru
borg extract /cesta/k/repo::archiv-2024-01-15 home/user/dokument.txt

# Obnovení s vyloučením souborů
borg extract --exclude '*.log' /cesta/k/repo::archiv-2024-01-15

# Obnovení do specifického adresáře (dry-run nejprve)
borg extract --dry-run --list /cesta/k/repo::archiv-2024-01-15

Připojení archivu přes FUSE

Alternativou k extrakci je připojení archivu jako virtuálního souborového systému. Toto je užitečné pro rychlé procházení zálohy a obnovení jednotlivých souborů bez nutnosti extrahovat celý archiv.

# Připojení archivu
mkdir /mnt/borg
borg mount /cesta/k/repo::archiv-2024-01-15 /mnt/borg

# Procházení souborů v záloze
ls /mnt/borg
cp /mnt/borg/home/user/dokument.txt ~/obnoveny-dokument.txt

# Odpojení archivu
borg umount /mnt/borg

# Připojení celého repozitáře (všechny archivy)
borg mount /cesta/k/repo /mnt/borg

Pruning — mazání starých archivů

Příkaz borg prune automaticky maže staré archivy podle nastavených pravidel retence. Po pruningu je vhodné spustit borg compact pro uvolnění diskového prostoru.

# Mazání starých archivů s pravidly retence
borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=12 /cesta/k/repo

# Pruning s výpisem, co bude smazáno (dry-run)
borg prune --dry-run --list --keep-daily=7 --keep-weekly=4 /cesta/k/repo

# Uvolnění diskového prostoru po pruningu
borg compact /cesta/k/repo

Automatizace s borgmatic

Borgmatic je konfigurační wrapper pro BorgBackup, který zjednodušuje nastavení a automatizaci záloh. Místo psaní složitých příkazů stačí vytvořit jednoduchý YAML konfigurační soubor, ve kterém definujete zdrojové adresáře, cílový repozitář, kompresní algoritmus, pravidla retence a další nastavení.

# Instalace borgmatic
pip install borgmatic
# nebo
pipx install borgmatic

# Vygenerování konfiguračního souboru
borgmatic config generate

# Editace konfigurace
nano /etc/borgmatic/config.yaml

Příklad konfigurace borgmatic v souboru config.yaml:

source_directories:
    - /home
    - /etc
    - /var/www

repositories:
    - path: user@server:/backup/borg-repo
      label: remote-backup

exclude_patterns:
    - '*.tmp'
    - '*/.cache'
    - '*/node_modules'

compression: zstd,3

retention:
    keep_daily: 7
    keep_weekly: 4
    keep_monthly: 12
    keep_yearly: 3

checks:
    - name: repository
      frequency: 2 weeks
    - name: archives
      frequency: 1 month
# Spuštění zálohy pomocí borgmatic
borgmatic create --verbosity 1

# Spuštění zálohy s pruningem a kontrolou
borgmatic

# Výpis archivů
borgmatic list

# Zobrazení informací
borgmatic info

Nastavení systemd timeru

Pro automatické pravidelné spouštění záloh je ideální využít systemd timer. Borgmatic obsahuje předpřipravené systemd soubory, které stačí aktivovat. Pokud chcete vytvořit vlastní timer, postupujte následovně.

Vytvořte soubor služby /etc/systemd/system/borgmatic.service:

[Unit]
Description=BorgBackup záloha pomocí borgmatic
Wants=network-online.target
After=network-online.target
ConditionACPower=true

[Service]
Type=oneshot
ExecStart=/usr/local/bin/borgmatic --verbosity -1 --syslog-verbosity 1
Nice=19
IOSchedulingClass=best-effort
IOSchedulingPriority=7

Vytvořte soubor timeru /etc/systemd/system/borgmatic.timer:

[Unit]
Description=Spustit borgmatic každý den

[Timer]
OnCalendar=daily
Persistent=true
RandomizedDelaySec=3600

[Install]
WantedBy=timers.target
# Aktivace a spuštění timeru
sudo systemctl enable borgmatic.timer
sudo systemctl start borgmatic.timer

# Kontrola stavu timeru
sudo systemctl status borgmatic.timer
sudo systemctl list-timers borgmatic.timer

# Ruční spuštění zálohy
sudo systemctl start borgmatic.service

Export a správa klíčů

Správa šifrovacích klíčů je klíčovou součástí provozování BorgBackupu. Po inicializaci šifrovaného repozitáře byste měli okamžitě exportovat klíč a uložit ho na bezpečné místo odděleně od repozitáře. Bez klíče nelze zálohy obnovit, a to ani v případě, že znáte heslo.

# Export klíče do souboru
borg key export /cesta/k/repo klíč-záloha.txt

# Export klíče na papír (QR kód)
borg key export --paper /cesta/k/repo

# Import klíče (v případě obnovy)
borg key import /cesta/k/repo klíč-záloha.txt

Doporučujeme exportovaný klíč uložit na více míst — do správce hesel (KeePass, Bitwarden), na šifrovaný USB disk a případně vytisknout papírovou kopii pro uložení do trezoru. Nikdy neukládejte klíč na stejné úložiště jako zálohy, protože v případě ztráty úložiště přijdete o obojí.

Monitorování a alerty

Pro produkční nasazení je důležité monitorovat stav záloh a být upozorněn na selhání. Borgmatic podporuje integraci s monitorovacími službami jako Healthchecks.io, Cronitor nebo PagerDuty. Při každém úspěšném dokončení zálohy borgmatic odešle ping na monitorovací službu. Pokud ping nedorazí v očekávaném čase, služba odešle upozornění.

# Konfigurace Healthchecks.io v borgmatic config.yaml
healthchecks:
    ping_url: https://hc-ping.com/váš-uuid
    states:
        - start
        - finish
        - fail

Pro jednoduchou notifikaci o stavu záloh můžete také použít e-mailové upozornění. Borgmatic umí odesílat e-maily při selhání zálohy prostřednictvím SMTP serveru. Nastavení je součástí konfiguračního souboru borgmatic a nevyžaduje žádný externí software.

Tip pro praxi Po nastavení automatických záloh nezapomeňte pravidelně testovat obnovu dat. Nastavte si připomínku alespoň jednou za měsíc obnovit náhodně vybraný soubor ze zálohy a ověřit, že celý proces funguje správně. Záloha, kterou nelze obnovit, nemá žádnou hodnotu.