Zimbraに大きな問題があります。 ibdata
ファイルが破損していて、メールボックスを開くことができません。 store/0/*
内にすべてのmsg
ファイルがありますが、データベースのバックアップは1週間前のものしかありません。先週からファイルを復元しようとしましたが、今週受信したメールが表示されません。 1週間に数百のメールがあり、mboxgroupフォルダーがたくさんあるため、1つずつ追加することはできません。
すべてのメールボックスをスキャンして、Zimbraにデータベースを再構築させる方法はありますか?スクリプトを作成する必要がある場合、バックアップとサーバーのクラッシュをメールで区別するにはどうすればよいですか?
Zimbraのコミュニティエディションを使用しています。
わかりました。誰も答えなかったので、うまくいきました。
メールがたくさんあり、複数のフォルダに分散しているため、データベース内のメールとそうでないメールを分ける必要があります。
これらを必ずコピーしてください...えーと..壊れたデータフォルダを別のフォルダにコピーしてください。したがって、問題が発生した場合は、いつでも元に戻すことができます。
だから最初のステップは、もちろんシャットダウンジンブラです
service zimbra stop
次に、動作していない古いmysqlデータベースを動作していないzimbraにコピーします。
cp /mnt/mail/db/* /opt/zimbra/db -R
ここで、7月のバックアップの〜/ store内のメールと、実行中のzimbraの〜/ store内のメールを比較する必要があります。次に、7月以外のすべてのメールを/ opt/backupの対応する別のフォルダーに移動しました。以下のスクリプトは、すべてのストアとボリュームで使用可能なすべての.msgをスキャンし、別のフォルダーに移動することです。以下のこのスクリプトを次のように保存します。つまり、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;
SOURCE、COMPARE dan DESTINATION変数を変更して、独自のフォルダーをミラーリングしてください。
出典:現在実行中のzimbraストアフォルダー 宛先:不足しているファイルをどこに移動しますか 比較:古い作業中のzimbraバックアップが存在する場所、そのデータベースを使用するもの。
次にchmod a+x compare.sh
実行可能にする場合は、./compare.sh
それを実行します。
結果は/ opt/backup/1から/ opt/backup/xxになります。ここで、xxはメールボックスストアです。/opt/backup/xに移動したすべてのメッセージは元のメールボックスにないため、追加されます。
これで、2つのフォルダーができました。 /opt/backup/xx
データベースにないファイルが含まれ、/opt/zimbra/
ほぼ同一である必要があります/mnt/mail/
Zimbraを起動します
service zimbra start
次に、すべてのメールボックスを取得する必要があります
mysql "zimbra" -e"select id,comment from mailbox"
残りは簡単です。次のようにCreateFolderとaddMessageを呼び出すだけで、不足しているメールを再添付できます。
zmmailbox -z -m <[email protected]> cf "/Inbox/Recovered"
zmmailbox -z -m <[email protected]> am "/Inbox/Recovered" "/opt/backup/<xx>"
例えば:
上記のステップ2から得たとしましょう
+ ---- + --------------------------------------- ------------- + | id |コメント| + ---- + ------------------------------------- --------------- + | 1 | [email protected] | | 2 | [email protected] | + ---- + --------------------------------- ------------------- +
これらのメッセージを次のように追加する必要があります。
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"
/ Inbox/Recoveredを好きなように自由に変更してください。