Ok .. da niemand geantwortet hat, habe ich es geklappt ..
Da wir viele E-Mails haben und auf mehrere Ordner verteilen, müssen wir die in der Datenbank von denen trennen, die nicht ..
Stellen Sie sicher, dass Sie diese ... äh ... Datenordner in einen anderen Ordner kopieren. Wenn also etwas schief geht, können Sie sie immer wieder zusammenfügen.
Also der erste Schritt ist natürlich das Herunterfahren von Zimbra
service zimbra stop
Kopieren Sie dann die ältere funktionierende MySQL-Datenbank in ein nicht funktionierendes Zimbra.
cp /mnt/mail/db/* /opt/zimbra/db -R
Nun müssen wir diese Mails in ~ / store im Juli-Backup mit denen in ~ / store in zimbra vergleichen. Dann habe ich jede Mail nicht im Juli in einen anderen Ordner unter / opt / backup verschoben. Das folgende Skript dient zum Scannen aller verfügbaren .msg-Dateien in allen Speichern und Volumes und zum Verschieben in einen anderen Ordner. Speichern Sie dieses Skript unter zB
compare.sh
SOURCE=/opt/zimbra/store/0 DESTINATION=/opt/backup COMPARE=/mnt/mail/store/0 for f in $SOURCE/*; do echo "scanning folder $"; for v in $f/msg/*; do comp=$COMPARE/$/msg/$ dst=$DESTINATION/$ 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/$ ]; 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;
Stellen Sie sicher, dass Sie die Variablen SOURCE, COMPARE und DESTINATION ändern, um Ihre eigenen Ordner zu spiegeln.
SOURCE: Aktueller laufender Zimbra Store-Ordner ZIEL: Wohin möchten Sie, dass Ihre fehlenden Dateien verschoben werden COMPARE: Wo sich Ihre alte Zimbra-Sicherung befindet, verwenden Sie die Datenbank.
Dann
chmod a+x compare.sh
um es ausführbar zu machen, dann./compare.sh
um es auszuführen.Das Ergebnis ist / opt / backup / 1 nach / opt / backup / xx, wobei xx Mailbox-Stores sind. Alle Nachrichten, die nach / opt / backup / x verschoben wurden, befinden sich nicht in der ursprünglichen Mailbox und werden hinzugefügt.
Jetzt haben wir 2 Ordner.
/opt/backup/xx
welche Dateien enthält, die sich nicht in der Datenbank befinden und/opt/zimbra/
die weitgehend identisch sein sollten/mnt/mail/
Starte Zimbra zurück
service zimbra start
Jetzt müssen wir alle Postfächer erhalten
mysql "zimbra" -e"select id,comment from mailbox"
Der Rest ist einfach, wir müssen nur CreateFolder und addMessage wie folgt aufrufen, um die fehlenden Mails wieder anzufügen:
zmmailbox -z -m <user@domain.net> cf "/Inbox/Recovered" zmmailbox -z -m <user@domain.net> am "/Inbox/Recovered" "/opt/backup/<xx>"
zum Beispiel:
Nehmen wir an, wir haben von Schritt 2 oben
+ ---- + ------------------------------------------ -------- + | id | Kommentar | + ---- + ------------------------------------------ -------- + | 1 | mymailbox@bogusmail.xcom | | 2 | awesome@bogusmail.xcom | + ---- + ------------------------------------------ -------- +
Wir sollten diese Nachrichten hinzufügen als:
zmmailbox -z -m mymailbox@bogusmail.xcom cf "/Inbox/Recovered" zmmailbox -z -m mymailbox@bogusmail.xcom am "/Inbox/Recovered" "/opt/backup/1" zmmailbox -z -m awesome@bogusmail.xcom cf "/Inbox/Recovered" zmmailbox -z -m awesome@bogusmail.xcom am "/Inbox/Recovered" "/opt/backup/2"
Fühlen Sie sich frei, das / Posteingang / Wiederhergestellt zu ändern, was Sie möchten.