Záloha GLPI: postup pre súbory, MariaDB databázu a automatizáciu cez cron

Záloha GLPI: postup pre súbory, MariaDB databázu a automatizáciu cez cron

GLPI (Gestionnaire Libre de Parc Informatique) obsahuje váš register majetku, tickety a konfiguračnú databázu — dáta, ktoré si nemôžete dovoliť stratiť. Funkčná záloha pokrýva tri veci: súbory aplikácie, vlastné úpravy pluginov a MariaDB databázu. Tento návod prejde každou časťou a na konci ukáže, ako celý proces automatizovať.

Krok 1: Záloha súborov GLPI a konfigurácie

Inštalačný adresár GLPI obsahuje kód, šablóny a — najdôležitejšie — priečinky config/ a files/, v ktorých je konfigurácia inštalácie a nahraté prílohy. Skopírujte celý strom na zálohovacie miesto:

cp -a /var/www/glpi /backup/glpi_$(date +%F)

Alebo zabaľte pre prenos:

tar -czf /backup/glpi_$(date +%F).tar.gz -C /var/www glpi

Použite cp -a (archive režim), nie cp -R — zachová vlastníctvo, časové značky a symlinky, čo je podstatné pre správne fungovanie oprávnení po obnove.

Krok 2: Záloha upravených pluginov

Pluginy sú v /var/www/glpi/plugins/ a v kroku 1 sú už zahrnuté. Ak ste upravovali kód pluginu priamo (neodporúčané, ale bežné), tieto zmeny sú pokryté. Ak máte zdrojové kódy alebo patche mimo GLPI adresára, zálohujte aj tie:

tar -czf /backup/glpi_plugins_$(date +%F).tar.gz /path/to/plugin-sources

Poznamenajte si verzie nainštalovaných pluginov. GLPI pluginy sú úzko previazané s verziou jadra — obnova na inú verziu GLPI si môže vyžadovať zodpovedajúcu verziu pluginu.

Krok 3: Záloha MariaDB databázy

GLPI ukladá tickety, majetok a väzby v MariaDB. Použite mysqldump s --single-transaction, aby ste získali konzistentný snapshot InnoDB tabuliek bez zámku aplikácie:

mysqldump -u glpi_user -p --single-transaction --quick --routines glpi_db | gzip > /backup/glpi_db_$(date +%F).sql.gz

K flagom:

  • -p samostatne si vyžiada heslo interaktívne. Nepoužívajte -p[heslo] v skriptoch — presakuje do histórie shellu a zoznamu procesov. Pre automatizáciu použite ~/.my.cnf s chmod 600.
  • --single-transaction poskytne konzistentný snapshot InnoDB tabuliek bez globálneho zámku. GLPI používa InnoDB ako predvolený engine, takže toto funguje čisto.
  • --quick streamuje veľké tabuľky po riadkoch namiesto bufferovania — užitočné pri väčších inštaláciách.
  • --routines zahrnie uložené procedúry. GLPI ich veľa nepoužíva, ale zahrnutie nič nestojí.

Krok 4: Automatizácia cez cron

Záloha, ktorú musíte spúšťať ručne, sa skôr či neskôr preskočí. Pridajte do /etc/cron.d/glpi-backup pre spúšťanie každú noc o 2:00:

0 2 * * * root /usr/local/bin/glpi-backup.sh

Minimálny glpi-backup.sh:

#!/bin/bash
set -euo pipefail
DATE=$(date +%F)
DEST=/backup
tar -czf "$DEST/glpi_files_$DATE.tar.gz" -C /var/www glpi
mysqldump --defaults-file=/root/.my.cnf --single-transaction --quick --routines glpi_db \
  | gzip > "$DEST/glpi_db_$DATE.sql.gz"
find "$DEST" -name "glpi_*" -mtime +30 -delete

Posledný riadok zachová 30 dní záloh a vymaže staršie. Retenciu upravte podľa potreby.

Krok 5: Ukladajte zálohy mimo server

Záloha, ktorá leží na tom istom serveri ako databáza, vám nepomôže, keď server zlyhá. Kopírujte zálohy inam — S3, Backblaze B2, iné dátové centrum alebo on-prem NAS na inom hoste. rclone zvládne väčšinu cloudových úložísk jedným príkazom:

rclone copy /backup remote:glpi-backup --include "glpi_*"

Testujte obnovy

Netestovaná záloha je nádej, nie obnovná procedúra. Aspoň raz za štvrťrok obnovte do staging prostredia: rozbaľte súbory, importujte SQL dump do prázdnej databázy, namerte testovaciu GLPI inštanciu na ňu a overte, že sa viete prihlásiť a vidieť tickety. Odhalíte pokazené oprávnenia súborov, porušené dumpy a nekompatibilné verzie MariaDB ešte predtým, než budú mať význam.

Potrebujete pomôcť s touto témou?

Kontakt