You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

 

#!/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."

Tableau récapitulatif Crontab


PositionSignificationValeurs possiblesExempleSignification pratique
1ère ★Minute0 à 595 → à la 5e minute
2ème ★Heure0 à 2314 → 14h (2PM)
3ème ★Jour du mois1 à 3115 → le 15 du mois
4ème ★Mois1 à 127 → juillet
5ème ★Jour de la semaine0 à 7 (0 et 7 = dimanche)1 → lundi




🚀 Exemples pratiques utiles


CrontabLecture humaine
* * * * *Toutes les minutes
*/5 * * * *Toutes les 5 minutes
0 * * * *À chaque heure pile
30 2 * * *Tous les jours à 2h30 du matin
0 0 * * 0Tous les dimanches à minuit
0 8-18 * * 1-5Toutes les heures de 8h à 18h du lundi au vendredi
15 14 1 * *Le 1er de chaque mois à 14h15
0 0 1 1 *Le 1er janvier à minuit (Nouvel an 🎉)





  • No labels