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