#!/bin/bash
# --------------------------------------------------------------------------
# GLPI Backup Script adapté pour GLPI 10.0.1.17 et ta configuration
# --------------------------------------------------------------------------
# === Fichier de configuration ===
BACKUP_CONFIG="/opt/scripts/glpi-backup/glpi-backup.conf"
# === Fonction pour lire les variables du fichier de config ===
read_config() {
local key="$1"
grep "^${key}=" "$BACKUP_CONFIG" | cut -d'=' -f2- | tr -d '"'
}
# === Lecture des variables de configuration ===
GLPI_DIR=$(read_config "GLPI_DIR")
GLPI_DATA_DIR=$(read_config "GLPI_DATA_DIR")
DB_HOST=$(read_config "DB_HOST")
DB_NAME=$(read_config "DB_NAME")
DB_USER=$(read_config "DB_USER")
DB_PASS=$(read_config "DB_PASS")
BACKUP_RETENTION_DAYS=$(read_config "BACKUP_RETENTION_DAYS")
RSYNC_ENABLE=$(read_config "RSYNC_ENABLE")
RSYNC_USER=$(read_config "RSYNC_USER")
RSYNC_HOST=$(read_config "RSYNC_HOST")
RSYNC_KEY=$(read_config "RSYNC_KEY")
RSYNC_PATH=$(read_config "RSYNC_PATH")
# === Répertoire temporaire local pour backup ===
BACKUP_DIR="/tmp/glpi_backup"
# === Création du répertoire backup si besoin ===
mkdir -p "$BACKUP_DIR"
# === Date/heure pour nommer les fichiers
DATE=$(date +"%Y%m%d%H%M%S")
# === Fichiers de backup
GLPI_BACKUP_FILE="${BACKUP_DIR}/glpi_files_backup_${DATE}.tar.gz"
DB_BACKUP_FILE="${BACKUP_DIR}/glpi_db_backup_${DATE}.sql.gz"
# === Backup des fichiers GLPI ===
echo "[+] Sauvegarde du répertoire ${GLPI_DATA_DIR}..."
tar --exclude='_sessions' -czf "$GLPI_BACKUP_FILE" -C "$GLPI_DATA_DIR" .
# === Backup de la base de données ===
echo "[+] Sauvegarde de la base de données ${DB_NAME}..."
mysqldump -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "$DB_BACKUP_FILE"
# === Nettoyage des anciens backups locaux ===
echo "[+] Nettoyage des backups locaux de plus de ${BACKUP_RETENTION_DAYS} jours..."
find "$BACKUP_DIR" -type f -mtime +"$BACKUP_RETENTION_DAYS" -delete
# === Rsync vers NAS si activé ===
if [ "$RSYNC_ENABLE" = "yes" ]; then
echo "[+] Envoi des backups vers NAS ($RSYNC_HOST)..."
rsync -avz --no-times --no-perms --no-owner --no-group -e "ssh -i $RSYNC_KEY" "$BACKUP_DIR/" "$RSYNC_USER@$RSYNC_HOST:$RSYNC_PATH"
fi
echo "[✔] Sauvegarde GLPI terminée avec succès."