Ok .. desde que ninguém respondeu, eu tenho funcionado ..
Como temos muitos e-mails e nos espalhamos em várias pastas, precisamos separá-los no banco de dados e aqueles que não são.
Assegure-se de copiar estes ... er .. pasta de dados quebrados em outra pasta. Então, se algo der errado, você pode sempre colocá-los juntos novamente.
-
Então, primeiro passo, é claro shutdown zimbra
service zimbra stop
-
copie o antigo banco de dados mysql de trabalho para o zimbra que não funciona.
cp /mnt/mail/db/* /opt/zimbra/db -R
-
Agora, precisamos comparar os e-mails em ~ / store no backup de julho, versus os e-mails em ~ / store na execução do zimbra. Em seguida, movi todos os e-mails que não estavam em julho para outra pasta correspondente em / opt / backup. O script abaixo é para digitalizar todos os arquivos .msg disponíveis em todas as lojas e volumes e mover para outra pasta. Salve este script abaixo para, por exemplo,
compare.sh
SOURCE=/opt/zimbra/store/0 DESTINATION=/opt/backup COMPARE=/mnt/mail/store/0 for f in $SOURCE/*; do echo "scanning folder ${f##*/}"; for v in $f/msg/*; do comp=$COMPARE/${f##*/}/msg/${v##*/} dst=$DESTINATION/${f##*/} if [ ! -d $dst ]; then echo "create $dst" mkdir $dst; fi echo "comparing volume $v to $comp" if [ -d $comp ] ; then for m in $v/*; do if [ ! -f $comp/${m##*/} ]; then echo "move $m to $dst" mv -b $m $dst fi done else echo "move $v/* to $dst" mv -b $v/* $dst fi done; done;
Certifique-se de modificar as variáveis SOURCE, COMPARE e DESTINATION para espelhar suas próprias pastas.
SOURCE: Current running zimbra store folder DESTINATION: Where do you want your missing files moved COMPARE: Where your old working zimbra backup resides, the one that you use its database.
Então
chmod a+x compare.sh
para torná-lo executável, então./compare.sh
para executá-lo.O resultado será / opt / backup / 1 para / opt / backup / xx, onde xx é o arquivo de caixa de correio. Todas as mensagens movidas para / opt / backup / x não estão na caixa de correio original e serão adicionadas.
Então agora temos duas pastas.
/opt/backup/xx
, que contém arquivos que não estão no banco de dados, e/opt/zimbra/
, que deve ser em grande parte idêntico/mnt/mail/
-
Inicie o Zimbra de volta
service zimbra start
-
Agora, precisamos obter todas as caixas de correio
mysql "zimbra" -e"select id,comment from mailbox"
-
O resto é fácil, só precisamos chamar CreateFolder e addMessage como estes para anexar os emails perdidos:
zmmailbox -z -m <[email protected]> cf "/Inbox/Recovered" zmmailbox -z -m <[email protected]> am "/Inbox/Recovered" "/opt/backup/<xx>"
por exemplo:
Digamos que tenhamos da etapa 2 acima
+----+----------------------------------------------------+ | id | comment | +----+----------------------------------------------------+ | 1 | [email protected] | | 2 | [email protected] | +----+----------------------------------------------------+
Devemos adicionar essas mensagens como:
zmmailbox -z -m [email protected] cf "/Inbox/Recovered"
zmmailbox -z -m [email protected] am "/Inbox/Recovered" "/opt/backup/1"
zmmailbox -z -m [email protected] cf "/Inbox/Recovered"
zmmailbox -z -m [email protected] am "/Inbox/Recovered" "/opt/backup/2"
Sinta-se à vontade para alterar / Caixa de entrada / Recuperado para o que quiser.