Приветствую Вас, Гость
Главная » Статьи » Mail » Zimbra

Zimbra. Скрипт бэкапа всех почтовых ящиков. Восстановление

Скрипт создаёт на целевом ресурсе ZBACKUP (в моём случае примонтированный по NFS RAID0) каталог с именем в виде текущей даты и складывает архивы ящиков в него. Запускаем под пользователем zimbra.

 #!/bin/bash

 ZHOME=/opt/zimbra
 ZBACKUP=/mnt/backup
 #ZBACKUP=/mnt/m2
 ZCONFD=$ZHOME/conf
 DATE=`date +%d-%m-%Y`
 ZDUMPDIR=$ZBACKUP/$DATE
 ZMBOX=$ZHOME/bin/zmmailbox

 if [ ! -d $ZDUMPDIR ]; then
 mkdir -p $ZDUMPDIR
 fi
 echo " Running zmprov ... "
        for mbox in `zmprov -l gaa`
 do
 echo " Generating files from backup $mbox ..."
        $ZMBOX -z -m $mbox getRestURL "//?fmt=zip" > $ZDUMPDIR/$mbox.zip
 done

Взято не помню где, м. б. на wiki.zimbra.org

Необходимо учитывать, что скрипт работает медленно вообще и тем более медленно, если ящиков много и/или они имеют большой размер, скажем, более 4 Гб. Например, на машине с четырёхядерным Intel(R) Core(TM) i3-3220 CPU @ 3.30GHz
и 4 Гб RAM (и даже 8 Гб RAM) бэкап ящика в 20 Гб снимался с ошибкой:

ERROR: zclient.IO_ERROR (Unable to get ?fmt=zip) (cause: java.net.SocketTimeoutException Read timed out)

Только увеличение RAM до 12 Гб помогло делу. Бэкап с помощью этого скрипта по NFS более чем 800 ящиков общим весом около 600 Гб на двухпроцессорном, Intel(R) Core(TM) i3-3220 CPU @ 3.30GHz, виртуальном сервере с 12 Гб RAM занимал около суток.

UPD: Восстановление письма/писем из архива

http://www.ossportal.ru/forum/zimbra/619

Самое сложное - это узнать, где чей ящик. Возможно есть какой-то нормальный способ, но я просматривал письма(от, кому) и только так определял, где чьё.
У меня почтовые ящики с письмами лежат здесь /opt/zimbra/store/0.
Смотрю через WinSCP где-чьё и перебрасываю на сервер с новой зимброй:

 rsync -e 'ssh -p22' -xrlptgoEv --progress /opt/bcp/private/z/zimbra/store/0/90/msg/ root@IP:/var/tmp/

После переброса захожу в папку с письмами(/var/tmp/user_mail).
Захожу под зимброй(su zimbra). И забрасываю все письма, которые есть в папке командой:

 for i in *.msg ; do zmmailbox -z -m user@domain.com addMessage /inbox $i ; done

Пароль к ящику не требуется.
Есть минус - заливаются и входящие и исходящие письма во входящие. Да, можно в ящике фильтрами разбросать, но мне было лень :)

Категория: Zimbra | Добавил: ab0k (09.07.2020)
Просмотров: 519 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar