Trace: » Script de backup pour GLPI et OCS Inventory NG

Script de backup pour GLPI et OCS Inventory NG

Vous trouverez sur cette page, un script écrit en bash, principalement pour Linux. Il doit être possible de l'adapter sans trop de problème pour du BSD.

Ce script est basique, simple, n'est pas forcément bien écrit, mais a le mérite de fonctionner et répond parfaitement à mes besoins.

Éléments à conserver

GLPI

Nous devons conserver la base de données MySQL de GLPI. Mais il est aussi requis de conserver les fichiers, notamment pour les plugins installés, les logs, etc.

OCS Inventory NG

Pour OCS Inventory NG, il suffit de conserver la base de données. Les fichiers n'étant modifiés que lors d'une évolution du programme.

Fonctionnement du script

Le script se contente de faire un dump des deux bases de données : GLPI (glpi) et OCS Inventory NG (ocsweb). Celui-ci se chargera également de copier l'ensemble des fichiers GLPI.

Il est possible que les bases de données GLPI et OCS soient sur deux serveurs, tout comme il est possible que les fichiers de GLPI soient sur un autre serveur.

Enfin, il est possible d'envoyer les fichiers sur un autre serveur Linux/BSD via un rsync. Vous pouvez aussi envoyer les fichiers dans un montage d'un serveur de partage sous Windows.

Enfin, le script intègre une vérification d'un montage. Dans le cas ou vous auriez un montage du dossier via SMBFS, NFS, ou autre.

Installation

Éditez /sbin/backups-glpi-ocs via votre éditeur de texte préféré.

 #!/bin/bash
 # Dossier de réception du backup
 backup_dir=/mnt/backup
 
 # Dossier content les fichiers GLPI
 glpi_dir=/var/www/glpi
 
 # Identifiants BDD OCS Inventory NG
 ocs_server=<Serveur BDD OCS Inventory NG>
 ocs_user=<Utilisateur BDD OCS Inventory NG>
 ocs_password=<Password BDD OCS Inventory NG>
 ocs_database=<Database BDD OCS Inventory NG>
 
 # Identifiants BDD GLPI
 glpi_server=<Serveur BDD GLPI>
 glpi_user=<Utilisateur BDD GLPI>
 glpi_password=<Password BDD GLPI>
 glpi_database=<Database GLPI>
 
 # Vérifier un montage
 mount_verify=yes
 mount_dir=/mnt/backup
 echo "Système de backup de GLPI et OCS Inventory NG"
 echo "Script développé par Benjamin Mercier - teclib' <www.teclib.com>"
 echo "-----------------------"
 
 # Vérification d'un montage
 # Cette partie du script sert à la vérification d'un montage avant d'effectuer le backup.
 # Par exemple, pour un transfert vers un serveur de partage Windows 'cifs', il faut vérifier que le partage est bien monté.
 if [[ "$mount_verify" = "yes" ]]
 then
         check_mount=`mount | grep $mount_dir | wc -l`;
         if [[ "$check_mount" -eq "0" ]]
         then
                 echo "ERREUR : Le dossier $mount_dir ne semble pas monté"
                 exit 1
         fi
 fi
 
 # Création d'un dossier temporaire, et vidage de celui-ci
 echo "Création du dossier temporaire"
 mkdir /tmp/backup-ocs-glpi &> /dev/null
 rm -Rfv /tmp/backup-ocs-glpi/* &> /dev/null
 
 # Changement de directory
 echo "Changement de répertoire"
 cd /tmp/backup-ocs-glpi/ &> /dev/null
 pwd=`pwd`
 if [[ "$pwd" != "/tmp/backup-ocs-glpi" ]]
 then
         echo "ERREUR : Impossible de se rendre dans /tmp/backup-ocs-glpi"
         exit 1
 fi
 
 # Date courante
 current_date=`date +%Y-%m-%d_%H-%M`
 
 # MySQLDUMP de la base OCS Inventory
 echo "Dump de la base OCS Inventory NG"
 mysqldump -h$ocs_server -u$ocs_user -p$ocs_password $ocs_database > /tmp/backup-ocs-glpi/ocs_database_$current_date.sql
 
 # MySQLDUMP de la base GLPI
 echo "Dump de la base GLPI"
 mysqldump -h$glpi_server -u$glpi_user -p$glpi_password $glpi_database > /tmp/backup-ocs-glpi/glpi_database_$current_date.sql
 
 # Copie du GLPI en RSYNC
 # Il est possible de le copier depuis un serveur distant
 echo "Copie du repertoire glpi"
 rsync -az $glpi_dir /tmp/backup-ocs-glpi
 echo "Changement du nom du repertoire GLPI"
 mv /tmp/backup-ocs-glpi/glpi /tmp/backup-ocs-glpi/glpi-$current_date &> /dev/null
 
 #vidage du répertoire de backup
 echo "Vidage du répertoire distant"
 rm -Rfv $backup_dir/backup-ocs-glpi &> /dev/null
 
 # Copie de l'ensemble des fichiers sur le backup
 echo "Transfert sur le serveur de backup"
 rsync -az /tmp/backup-ocs-glpi $backup_dir
 
 # Suppression du répertoire
 echo "Suppression du répertoire temporaire"
 rm -Rfv /tmp/backup-ocs-glpi &> /dev/null
 echo "Backup terminé"
  • backup_dir : Dossier de destination du backup
  • glpi_dir : Dossier content l'application GLPI
  • ocs_server : Serveur de la base de données OCS
  • ocs_user : Utilisateur de la base de données OCS
  • ocs_password : Mot de passe de la base de données OCS
  • ocs_database : Nom de la DB OCS
  • glpi_server : Serveur de la base de données GLPI
  • glpi_user : Utilisateur de la base de données GLPI
  • glpi_password : Mot de passe de la base de données OCS
  • glpi_database : Nom de la DB GLPI
  • mount_verify : Vérifier si un dossier est monté : yes ou “rien”/no/autre
  • mount_dir : Dossier dont le montage doit être vérifié

Puis, chmodez le. Ceci est très important, ce fichier contient des mots de passe, seul root doit pouvoir le lire.

 chmod 700 /sbin/backups-glpi-ocs
 chown root:root /sbin/backups-glpi-ocs

Enfin, ajoutez une ligne au crontab, afin de lancer le backup aux horaires souhaités :

 vi /etc/crontab
 1 4 * * * /sbin/backups-glpi-ocs | mail -s 'Backup GLPI et OCS' mon@email.fr
 /etc/init.d/cron restart