Sauvegarde et Restauration Zimbra OSE (Open Source) Via Script

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 :

http://www.zimbra.com/forums/administrators/15275-solved-yet-another-backup-script-community-version-24.html

http://www.osoffice.de/

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

sm utilisateur@domaine.fr

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

sm utilisateur@domaine.fr

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

9 réponses à “Sauvegarde et Restauration Zimbra OSE (Open Source) Via Script

  1. 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?

  2. 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

    1. 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.

  3. 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

Les commentaires sont clos.