Script de Sauvegarde à chaud [HBZ] V0.3
ces scripts ont été testés sur un serveur ubuntu LTS 8.0.4
pour zimbra 5.0.11 & 5.0.13
Cette Version corrige un bug sur le passage des mails dans l'antispam après la restauration d'un compte (qui ne s'effectuait plus).
HBZ V0.3 (298) - 9.16 KBPrérequis :
« which mysqldump » doit retourner une valeur
la commande « curl » doit etre installée.
awk installé & dans le path.
Composition du package (hbz.tgz) :
install.sh
hbzuser
hbzallusers
hbzrestore
hbz.conf
hbzutils
Description des fichiers :
install.sh :
Script permettant de Créer / installer / supprimer le package HBZ
création du package :
mettre tous les fichiers dans un même répertoire et lancer la commande : ./install.sh -c
cela créé un fichier ./hbz.tgz qui peut être diffusé.
installation du package :
tar -xzf hbz.tgz
cd hbz
./install.sh
suppression du package :
./install.sh -u
hbz.conf :
Fichier de configuration qui permet de paramétrer le fonctionnement de l'HBZ.
Configuration du type de log à produire
Configuration du répertoire temporaire à utiliser
hbzutils :
Fichier contenant les fonctions utilisées par les commandes hbzuser, hbzallusers & hbzrestore.
Il est chargé par chacune de ces commandes.
hbzuser :
commande permettant de sauvegarder un utilisateur.
utilisation :
hbzuser <userid[@domain]> [ répertoire_de_destination_de_la_sauvegarde | ( défaut "./" ) ]
option disponible :
-v : mode verbeux, Affiche sur la sortie standard le contenu de la log
hbzallusers :
commande permettant de sauvegarder tous les utilisateurs du serveur.
utilisation :
hbzallusers [ répertoire_de_destination_des_sauvegardes | ( défaut "./" ) ] [ Shell_perso ]
le paramètre Shell_perso permet de transmettre au script un shell qui sera appelé à la fin de la sauvegarde de tous les utlisateurs
et qui recevra en paramètre un fichier contenant le chemin et le nom des sauvegarde crée.
option disponible :
hbzrestore :
commande permettant de restaurer une sauvegarde
utilisation :
hbzrstore <backup_file> [ new_userid ]
option disponible :
-v : mode verbeux, Affiche sur la sortie standard le contenu de la log
Exemple d'utilisation :
installation
rm -Rf hbz; cp /source/hbz.tgz ./ ;tar -xvzf hbz.tgz ; cd hbz; ./install.sh ; cd ../
Sauvegarde de tous les utilisateurs vers le répertoire "/backup"
/opt/zimbra/libexec/hbzallusers /backup
sauvegarde d'un utilisateur vers le répertoire /backup
/opt/zimbra/libexec/hbzuser frank /backup
sauvegarde d'un utilisateur dans le répertoire courant avec affichage des log
/opt/zimbra/libexec/hbzuser -v frank
restauration de la sauvegarde de l'utilisateur "frank" en date du 01/07/2008 sur le compte toto
/opt/zimbra/libexec/hbzrestore frank_20080701.tgz toto
restauration de la sauvegarde de l'utilisateur "frank" en date du 01/07/2008 avec affichage des log
/opt/zimbra/libexec/hbzrestore -v frank_20080701.tgz
planification :
Création du répertoire ou l'on va stocker les sauvegardes
mkdir -p /backup/hbz/
ajout d'une planification dans le cron
ajout dans le crontab : (en tant que root cmd : crontab -e)
#sauvagarde de tous les comptes mail du serveur tous les soirs à 00h00 :
0 0 * * * /opt/zimbra/libexec/hbzallusers /backup/hbz/
#suppression des sauvegarde de plus de 10 jours (executer à 01h00)
0 1 * * * find /backup/hbz/ -type f -mtime +10 -a -name "*_[0-9]*.tgz" -exec rm -f {} \;
Note :
- erreur mineur : ERROR: zclient.IO_ERROR (invoke Connection refused, server: localhost) (cause: java.net.ConnectException Connection refused)
==> tentative de connexion sur zimbra pour indexer les mail du compte. peut etre fait plus tard via la consol d'admin
29 commentaires
Other Links to this Post
Flux RSS des commentaires de cet article. TrackBack URI
By Laurent, 27 avril 2009 @ 14:07
Bonjour,
Lors d'une sauvegarde complète j'ai une erreur sur chaque compte './hbzutils : line 248 : -S commande introuvable'
"which mysqldump" ne retourne pas de valeur.
Je suis novice avec linux. Je ne comprends pas le prérequis awk installé & dans le path.
Merci d'avance pour votre aide
By admin, 27 avril 2009 @ 14:36
which est une comande linux (unix) qui donne le chemin de la commande passée juste après elle.
par exemple la commende "ls" liste le contenu d'un répertoire. Si vous tapez la commande "which ls" vous aurez comme résultat : /usr/bin/ls
Ce qui montre ou est installé la commende.
lorsque vous tapez sur une session shell la commande : which mysqldump
vous devez obtenir un résultat du genre : /usr/bin/mysqldump (cela peut être différent, mais il faut un résultat)
dans le cas contraire, il faut installer le programme mysqldump (pour ubuntu je crois que c'est le paquet mysql-client)
c'est la même chose pour la commande awk
By Laurent, 27 avril 2009 @ 16:01
Merci beaucoup. Cela fonctionne parfaitement avec vos explications.
Juste une petite remarque si il y a un problème avec le script hbzallusers les comptes passent à l'état de maintenance mais il n'y a pas de restauration de l'état d'origine ce qui risque de poser de gros soucis pour l'administrateur si le serveur gére plusieurs centaines de comptes.
By YBeaujean, 11 mai 2009 @ 11:19
Bonjour,
Superbe script
Je suis sous debian avec Zimbra OSE 5.0.16.
Les sauvegardes se passent bien, en revanche si je veux restaurer un compte sur un autre, j'ai : /opt/zimbra/libexec/hbzutils: line 278: % 100: syntax error: operand expected (error token is "% 100").
et aussi
xecution de la requete (database = hbztmp) : ALTER TABLE imap_folder DROP FOREIGN KEY fk_imap_folder_mailbox_id
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
D'ou cela peut-il venir ?
Merci
By admin, 11 mai 2009 @ 16:58
les scripts V0.3 ne sont pas testés sur la 5.0.16 et je pense qu'il ne sont pas compatible (la structure de la base à encore du changer).
j'effectuerai des testes et les modifications nécessaires au fonctionnement avec une 5.0.16 rapidement.
By Quentin K., 14 mai 2009 @ 10:24
je suis content de vous lire et espere trouver suite a ma preoccupation ici.
Quelle est la commande pour sauvegarder la base des données zimbra? C'est a dire, quelle est la commande correspondante a "mysqldump --all -databases -h localhost -u root -p ..." pour l'utilisateur zimbra (ou dans zimbra)
D'avance merci
Quentin K.
By admin, 14 mai 2009 @ 17:00
Bonjour,
pour commencer, sauvegarder simplement la base de donnée zimbra n'a que peut d'intérêt, mais après tous...
il faut que mysql-client soit installé (pour avoir la commande mysqldump) car mysqldump ne fait plus parti des binaire zimbra depuis la 5.0.12 (de mémoire)
il faut chargé les variables zimbra :
source /opt/zimbra/bin/zmshutil (ou ". /opt/zimbra/bin/zmshutil" )
zmsetvars
ensuite la commande suivante devrai fonctionner :
$(which mysqldump) -S $mysql_socket -h$mysql_bind_address -P$mysql_port -u root -p$mysql_root_password --all-databases
By YBeaujean, 25 mai 2009 @ 10:24
Je reviens vers vous pour savoir si une version compatible 5.0.16 va voir le jour ?
Merci
By admin, 25 mai 2009 @ 10:53
J'avais commencé les modifications pour sortir rapidement une version pour la 5.0.16. mais je n'ai pas fini par manque de temps.
Cela devrait venir mais je ne peux pas dire quand.
By Rislo, 7 juin 2009 @ 23:27
Bonjour Pour ma part le script fonctionne bien mais je voudrais placer les sauvegarde sur un autre Pc j'utilise donc la commande :
hbzuser user@domain.com smbclient //192.168.1.4/Zimbrasave
Mais cela ne fonctionne pas avez vous une idée ?
By Rislo, 8 juin 2009 @ 00:22
J'ai trouver c'est tout bete il fallait monter un lecteur réseau par contre tout mais compte son en maintenance... Quelle modification au script je peut faire pour plus que cela arrive ?
By YBeaujean, 8 juin 2009 @ 08:26
Bonjour,
Du nouveau pour la compatibilité avec la 5.0.16...
Merci
By admin, 9 juin 2009 @ 22:09
si les compte sont en maintenance alors qu'avant il était en actif, c'est que le script n'est pas allé jusqu'au bout car il remet les compte dans leur état avant lancement.
je pense que c'est dû au lancement avec smb (première commande qui à plantée).
By PhD, 22 juin 2009 @ 13:06
Bonjour,
Il y a un bug qui bloque un pour cent des comptes.
Le nom de la base de donnée liée à l'utilisateur est calculé par la ligne :
MAILBOX="mboxgroup^$(($MAILBOX_ID % 100))"
or si le modulo 100 de mailbox_id est de zéro alors la base doit être mboxgroup100.
Voir : http://wiki.zimbra.com/index.php?title=Account_mailbox_database_structure
La correction est d'ajouter dans hbzutils, ligne 247
if [ "$MAILBOX" = "mboxgroup0" ]
then
MAILBOX="mboxgroup100"
fi
De même pour la ligne 278 ou 282...
user_group_id=$(($user_group_id % 100))
if [ "user_group_id" = "0" ]
then
user_group_id = "100"
fi
Merci pour le script.
By admin, 24 juin 2009 @ 13:13
Bonjour,
je m'étais appuyé sur ce wiki, mais j'avais zappé le coup du 0 (et n'ayant pas plus de 80 utilisateurs....)
je fais la correction pour la version en cours.
By YBeaujean, 25 juin 2009 @ 16:06
Ou en est-on pour le support de la 5.0.16 ?
Merci
Cordialement
By Zimbra Guy, 30 juillet 2009 @ 10:33
Bonjour,
Un petit post pour un retour d'expérience, je viens juste de tester votre script sur la version 5.0.18 et cela semble bien passé. Je l'ai utilisé avec un compte puis fait une restore de celui-ci après l'avoir effacé et cela a bien fonctionné. Idem pour la sauvegarde de masse mais nous n'avons pas testé une restore après, nous allons étudié cela. Est-il également possible de faire une restore de masse ?
En tout cas beau travail et merci. J'aimerai également savoir si l'utilisation de votre script est soumise à une contrainte via une licence ?
Je précise également dans notre cas que l'utilisation du script devait se faire sous le compte root et non zimbra.
Cordialement.
By Zimbra Guy, 31 juillet 2009 @ 09:47
Bonjour,
je vous avez posté un commentaire hier (30/07/09) et je viens de me rendre compte qu'il a disparu. J'aurais voulu savoir si il avait été pris pour un faux positif par AKISMET ou si j'avais écrit quelque chose de désagréable, surtout que je trouve votre script intéressant et que je voulais savoir quelles étaient les conditions d'utilisation de celui-ci. N'y voyez pas une démarche commerciale mais un soucis de travailler dans les règles de l'art. De plus c'est pour un projet Open Source. N'hésitez pas à me contacter personnellement si besoin.
Cordialement
By admin, 13 août 2009 @ 16:14
bonjour,
vacance oblige et emplois du temps chargé, ont fait que je ne suis pas passer par ici depuis juin...
(le 1er commentaire d'une personne doit être approuvé manuellement)
aucune licence n'est appliqué. y'a pas plus open source....
By Zimbra Guy, 14 août 2009 @ 12:39
Bonjour,
Merci pour votre réponse, en tout cas j'ai fait quelques essais à nouveau et cela semble pas trop mal se passer niveau backup et restore de masse (une dizaine de comptes). Par conte cela peut entrainer un message d'erreur dans les logs mais sans gravité indiquant en gros que le compte était indisponible.
Merci
By YBeaujean, 7 septembre 2009 @ 11:02
Bonjour,
Est-il envisagé un script pour la V6 Open Source de Zimbra ?
Merci
By admin, 14 septembre 2009 @ 15:08
envisagé oui car quand je passerait mon serveur en V6 j'essaierai de faire une nouvelle version de hbz, en utilisant les commande d'export de boite mail qui existe depuis la V11 comme ca plus de modification en brut dans la base MySQL, il ne restera que les manip sur le LDAP
By moreau, 14 octobre 2009 @ 06:11
avez-vous du nouveau concernant hbz pour la v6 ?
merci
By parch, 6 novembre 2009 @ 11:27
Bonjour, je suis en train de mettre en place une procédure de backup sur un serveur zimbra 6. Et je voudrais savoir si votre scripte etait adaptable a la version 6
merci
By admin, 6 novembre 2009 @ 17:49
non, il n'est pas adapté à la version 6
By parch, 9 novembre 2009 @ 08:32
après quelques test, il est possible de sauvegarder un utilisateur et de le restaurer. Cependant j'ai pus remarquer qu'il ne restaurait pas les alias. Je n'est pas encore testé sur une sauvegarde complète.
By Boby, 9 novembre 2009 @ 18:58
Bonjour.
Félicitations pour votre travail.
Après un grand nombre d'années sous W je m'intéresse de près à Linux et un j'ai un projet de migration d'Exchange vers Zimbra V6 sur Ubuntu LTS 8.0.4. Vu mes connaissances en Linux je compte beaucoup sur les autres pour une aide et en particulier les sauvegardes à chaud de Zimbra non fournies sur la version OSE. Je suis tombé par hasard sur votre travail et je reviens régulièrement voir si la version 6 était à l'ordre du jour.
Merci d'avance.
By sebbastou, 22 février 2010 @ 17:06
Bonjour,
Je suis très intéressé par votre script et une adaptation pour une version 6 de Zimbra OSE.
Est-ce toujours d'actualité ?
Merci.
By Suessions, 6 mai 2010 @ 13:12
Bonjour et merci pour ces scripts,
Dans un premier temps, j'aurai aimé savoir si vous avez pu adapter ces scripts à la version 6 de Zimbra?
Si Non, comment, parch, avez-vous fait et quelles modifications avez-vous apporté pour sauvegarder et restaurer en v6?
Merci d'avance