La sauvegarde d’une version open-source de Zimbra n’est pas possible avec cette version. En effet, seuls les versions Network de Zimbra offre la possibilité de faire des sauvegardes en natif. Pour contourner ce problème, j’ai découvert sur internet un script réalisé par osoffice qui permet de réaliser des sauvegardes sur une version OSE.
Je fais une mise à jour d’un précédent post. En effet, sur l’ancien, je n’expliquais pas comment restaurer une sauvegarde.
Sources :
1 – Téléchargement du script
Disponible à l’adresse suivante : http://www.osoffice.de/downloads/finish-2.html
Mettre le script sur le serveur Zimbra via Winscp par exemple. Dans mon cas, j’ai créé un dossier sauvegarde à la racine.
2 – Installation du script
Se rendre dans le dossier Sauvegarde
cd /Sauvegarde
Lancer l’installation
sh zmbak_v.0.8.sh –INSTALL
Répondre Y et appuyer sur [Entree]
cat: /opt/zimbra/backup.week: Aucun fichier ou répertoire de ce type
Required directory /Backup/burn/ not found!
/Backup/burn/ not found!
Create /Backup/burn/ y or n: Y
Répondre Y et appuyer sur [Entree]
mkdir: création du répertoire `/Backup/burn/’
‘uuencode’ is not installed!
Should I try install ‘uuencode’ for you?
!! Only say yes if you are running Ubuntu!!
install y or n: Y
Répondre Y et appuyer sur [Entree]
‘dar’ is not installed!
Should I try install ‘dar’ for you?
!! Only say yes if you are running Ubuntu!!
!! You must have Universe enabled or this will fail!!
install y or n: Y
Répondre Y et appuyer sur [Entree]
Create noread
install y or n: Y
Répondre G et appuyer sur [Entree]
touch: ne peut faire un touch sur `/etc/zmbak_v.0.8.sh/noread’: Aucun fichier ou répertoire de ce type
chmod: ne peut accéder `/etc/zmbak_v.0.8.sh/noread’: Aucun fichier ou répertoire de ce type
‘G’enerate or ‘E’nter a secure passphrase
please enter G or E: G
En répondant oui, nous allons automatiser les sauvegardes en choisissant l’heure de celles-ci. Dans notre cas : Y
et appuyer sur [Entree]
Install cronjob to automate the nightly backups?
install y or n: Y
Choisir l’heure pour la sauvegarde. Dans mon cas 22 et appuyer sur [Entree]
Setting the time when to start the backup cycle
no crontab for root
At what hour? 0-23: 22
Choisir les minutes et appuyer sur [Entree]
and what minute do you want the backup to start? 0-59:
30
L’installation est terminée
path to script e.g. /root/scripts
30 22 * * 1 /bin/bash /zmbak_v.0.8.sh -f > /var/log/zim_backup.log 2>&1
30 22 * * 2-7 /bin/bash /zmbak_v.0.8.sh -d >> /var/log/zim_backup.log 2>&1
Done setting up crontab
3 – Installation des dépendances
Installation de Dar.
apt-get install dar
Installation Rsync
apt-get install rsync
4 – Lancement d’une sauvegarde complète
sh zmbak_v.0.8.sh –full
Déroulement de la sauvegarde
============================
mercredi 3 mars 2010, 10:20:29 (UTC+0100)
Performing FULL backup
============================
full Backup started at: mercredi 3 mars 2010, 10:20:29 (UTC+0100)
No old backups found
Setting date & version Marker into /opt/zimbra/DATE_VERSION.txt
Doing a hotsync of /opt/zimbra/ to /tmp/fakebackup/
nice: option invalide — a
Pour en savoir davantage, faites: « nice –help ».
rsync threw a hotsync error. this is not unusual, continuing…
Disabling the Zimbra crontab…
Stopping the Zimbra server…
Host domaine.fr
Stopping stats…Done.
Une fois la sauvegarde complète terminée, un résumé doit apparaître.
——————————————–
34693 inode(s) saved
with 731 hard link(s) recorded
0 inode(s) changed at the moment of the backup
0 inode(s) not saved (no inode/file change)
0 inode(s) failed to save (filesystem error)
0 inode(s) ignored (excluded by filters)
0 inode(s) recorded as deleted from reference backup
——————————————–
Total number of inode considered: 34693
——————————————–
EA saved for 0 inode(s)
——————————————–
Creating MD5 Checksum for 09_ZimbraBackup_20100303_FULL.1.dar…
Creating file listing from archive…
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
full Zimbra Backup ended at: 11:42
Backup took Hr:0 Min:15 Sec:47 to complete
:::::::::::::::Cheers Osoffice for the script:::::::::::::::::::::::
Null message body; hope that’s ok
5 – Restauration d’un seul compte utilisateur
Passer en utilisateur Zimbra
su zimbra
Repérer le numéro d’identifiant (ID) concernant l’utilisateur a restauré. Pour cela exécuter
zmprov getMailboxInfo user@domaine.fr
Résultat de la commande précédente doit renvoyer le numéro ID dans mon cas 3
mailboxId: 3
quotaUsed: 2303817
Faire une liste des dossier IMAP. Cela fonctionne que si l’utilisateur est toujours présent sur le serveur. Il suffit de mettre la valeur numéro ID récupérer précédemment.
mysql mboxgroup3 -e « SELECT type, parent_id, name FROM mail_item WHERE type=1 » | sort -k2 | grep -v parent_id
/!\ Si jamais l’utilisateur n’existe pas, il faut regarder dans le fichier de sauvegarde pour trouver le dossier de l’utilisateur. Chaque dossier est numéroté et correspond au numéro ID. L’utilisation d’outil comme grep et souhaitable afin de trouver plus facilement un utilisateur. /!\
La commande doit retournée les valeurs suivantes, c’est-à-dire une liste de tous les dossiers IMAP
1 11 Conversations
1 11 ROOT
1 11 Tags
1 11 USER_ROOT
1 1 Briefcase
1 1 Calendar
1 1 Chats
1 1 Contacts
1 1 Drafts
1 1 Emailed Contacts
1 1 Inbox
1 1 Junk
1 1 Notebook
1 1 Sent
1 1 Tasks
1 1 Trash
Porte-documents, Calendrier, Chats, Contacts, Envoyés contacts, bloc-notes, tâches, Conversations, ROOT, Tags, USER_ROOT ne sont pas des dossiers contenant des mails.
Faire une sauvegarde du répertoire contenant les messages de l’utilisateur ayant dans notre cas l’ID 3. Nous allons copier le dossier dans /Sauvegarde.
cp -pr /opt/zimbra/store/0/3/msg/ /Sauvegarde/
Création d’un script add_reveived.sh qui va changer la date en en-tête des messages avant l’importation. Celui-ci va permettre d’éviter d’avoir comme date de réception celle du jour où la restauration a été effectuée mais la date du jour où le mail a été envoyé.
nano add_received.sh
Contenu du script :
#!/bin/sh
# USAGE: -h or –help for help & usage.
# add_received.sh path/to/folder/containing/msg/directory
# e.g
# add_received.sh /home/msg
# Auteur : LaFong
# Source : http://www.zimbra.com/forums/administrators/15275-solved-yet-another-backup-script-# community-version-24.html
BackupStore= »$1″
function checkDirectory {
if [ -d « $BackupStore » 2>/dev/null ] ; then
addReceived
else
echo
echo « Directory does not exist! »
show_help
exit 0
fi
}
function addReceived {
for d in `ls -A -1 « $BackupStore »`
do
HASMSG=`ls -A -1 « $BackupStore/$d »/*.msg | head -1 2>/dev/null`
if [ -z $HASMSG ] ; then
echo
echo « Specified directory has no .msg files! »
show_help
else
for i in `ls -A -1 « $BackupStore/$d »/*.msg`
do
if ! grep « X-Zimbra-Received » $i 1>/dev/null ; then
sed -i /^Date/p $i
sed -i ‘0,/^Date/s/^Date/X-Zimbra-Received/’ $i
fi
done
fi
done
}
function show_help {
echo
echo « USAGE: add_received.sh path/to/folder/containing/msg/files »
echo » e.g »
echo » add_received.sh /home/msg_backup »
echo » -h or –help for help & usage. »
echo
echo
}
case $1 in
-H | -h | –help)
show_help
;;
*)
checkDirectory
;;
esac
exit 0
Control + X pour quitter nano
Il demande si l’on sauve, dire Oui en pressant la touche OIl demande comment le fichier doit s’appeler, faire Entrée pour ne toucher à rien.
Exécuter le script sur la sauvegarde effectuée auparavant.
sh add_received.sh /Sauvegarde/msg/
Suppression de l’utilisateur si celui-ci existe.
zmprov da utilisateur@domaine.fr
Création de l’utilisateur
Zmprov
createAccount utilisateur@domaine.fr motdepasse
Ajout d’un dossier IMAP pour l’utilisateur précédemment créé en ligne de commande
zmprov
mailbox: utilisateur@domaine.fr, size: 0 KB, messages: 0, unread: 0
createFolder /Test
Pour restaurer les mails deux solutions sont possibles, soit en passant par zmprov soit par zmmailbox. Nous utilisons donc le dossier de la sauvegarde réalisé auparavant.
Avec zmmailbox :
zmmailbox
authenticate utilisateur@domaine.fr motdepasse
addMessage INBOX /Sauvegarde/msg/0
Avec zmprov :
zmprov
mailbox: utilisateur@domaine.fr, size: 0 KB, messages: 0, unread: 0
addMessage INBOX /Sauvegarde/msg/0
6 – Restauration complète
Pour commencer, je vais faire renommer le répertoire existant de Zimbra afin de le garder en copie en cas d’erreur sur la restauration.
mv /opt/zimbra zimbra_save
Stopper les services de Zimbra
su zimbra
zmcontrol stop
Création du dossier zimbra
mkdir /opt/zimbra
Se placer dans le dossier Zimbra
cd /opt/zimbra
Exécuter les commandes suivantes pour lancer la restauration
dar-x /Backup/zimbra_dars/nomdelasauvegardeFULL.dar
dar-x /Backup/zimbra_dars/nomdelasauvegardeDIFF.dar
Redémarrage des services Zimbra
su zimbra
zmcontrol start
Auteur : POMENTE Guillaume
Partager la publication "Sauvegarde et Restauration Zimbra OSE (Open Source) Via Script"
Bonjour,
je suis très intéressé par cet outil mais malheureusement dès l’exécution de cette première commande:
sh zmbak_v.0.8.sh –INSTALL
il me sort:
cat: /opt/zimbra/backup.week: Aucun fichier ou dossier de ce type
[: 143: Illegal number:
zmbak_v.0.8.sh: 158: Syntax error: « ( » unexpected
puis il s’arrête là…
Avez-vous déjà rencontré ce problème?
Bonjour,
Est-ce que le dossier backup est bien créer dans /opt/zimbra ?
Cordialement,
Oui le dossier backup existe
Bonsoir,
J’ai le même soucis que walid, le repertoir backup est présent sous opt/zimbra.
Je suis sous Ubuntu 12.04.1 LTS et Version VMware Zimbra :8.0.0_GA_5434.FOSS
Voici le message d’erreur au lancement du script
cat: /opt/zimbra/backup.week: No such file or directory
zmbak_v.0.8.sh: 138: [: Illegal number:
zmbak_v.0.8.sh: 158: zmbak_v.0.8.sh: Syntax error: « ( » unexpected
D’avance merci
Bonjour,
Est ce que le répertoire Backup existe dans /opt/zimbra ? Quel droits il y a sur le répertoire ?
Je n’ai pas eu l’occasion de tester ce script avec zimbra 8. Pouvez vous me faire un retour d’expérience svp ?
Cordialemenent,
Guillaume P.
Bonsoir,
Oui le dossier Backup existe dans /opt/zimbra, du coup le script ne ce lance pas.
D’avance merci.
Bonjour,
Merci soucis pour moi. Avez-vous trouvé une solution ?
Merci
J’ai compris, il ne faut pas faire :
sh zmbak_v.0.8.sh -INSTALL
mais
./zmbak_v.0.8.sh -INSTALL
Bonjour Guillaume ,
j’ai le même problème que Rod Je suis sous Ubuntu 12.04.1 LTS et Version VMware Zimbra :8.0.3_GA_5434.FOSS et quand exécutante le script j’ai le message suivant :
cat: /opt/zimbra/backup.week: Is a directory
Avez-vous trouvé une solution