Tips Zimbra : Backup Mailbox Berdasarkan Interval Waktu/Tanggal Tertentu

Posted by

Untuk melakukan backup Zimbra khususnya mailbox, banyak metode yang dapat digunakan, misalnya beberapa metode dibawah ini :

Beberapa metode diatas dapat digunakan apabila ingin melakukan backup mailbox secara full. Untuk backup sendiri ada kalanya kita butuh backup mailbox untuk beberapa hari yang lalu, tanggal tertentu atau dari tanggal tertentu sampai dengan tanggal tertentu. Untuk melakukan hal itu, kita dapat membuat sebuah simple script agar dapat melakukan backup mailbox sesuai dengan yang diterangkan diatas. Berikut adalah script untuk melakukan backup mailbox berdasarkan interval waktu tertentu :

Buat satu buah script dengan nama backup-mailbox.sh misalnya

cd /srv/
vi backup-mailbox.sh
##!/bin/bash

## Format Backup:
FORMAT=tgz

## Lokasi Backup
ZBACKUP=/srv/backup/

## Nama Folder Backup Berdasarkan Tanggal Backup
DATE=`date +"%d%m%y"`

## Tempat Penyimpanan Hasil Backup
ZDUMPDIR=$ZBACKUP/$DATE

## Lokasi zmmailbox
ZMBOX=/opt/zimbra/bin/zmmailbox

### Opsi Backup Yang Diinginkan ###

## Berdasarkan beberapa hari yang lalu sampai sekarang, misalkan 1 hari yang lalu. Jika 7 hari yang lalu, ganti 1 days ago dengan dengan 7 days ago

#HARI=`date --date='1 days ago' +"%m/%d/%Y"`
#query="&query=after:$HARI"

## Berdasarkan Tanggal Tertentu, Misalnya tanggal 29 Sept 2013. Jika ingin tanggal yang lain, sesuaikan format-nya dengan mengikuti format %m/%d/%Y

#query="&query=date:09/29/2013"

## Berdasarkan Dari/Ke Tanggal Tertentu. Misalnya Backup Mailbox Sebelum Tanggal 29 Sept 2013 dan Sesudah tanggal 29 Agustus 2013

#query="&query=after:08/29/2013 before:09/29/2013"

## Check direktori backup, jika belum ada, dibuat
if [ ! -d $ZDUMPDIR ]; then
        mkdir -p $ZDUMPDIR
fi

## Looping Account Zimbra
for account in `su - zimbra -c 'zmprov -l gaa'`
do
echo "Processing mailbox $account backup..."
        $ZMBOX -z -m $account getRestURL "//?fmt=${FORMAT}$query" > $ZDUMPDIR/$account.${FORMAT}
done

echo "Zimbra Mailbox backup has been completed successfully."

Catatan :
Script diatas saya buat menjadi 3 opsi, yaitu opsi 1 berdasarkan beberapa hari yang lalu, opsi 2 berdasarkan tanggal tertentu dan opsi 3 berdasarkan dari/ke tanggal tertentu. Silakan hilangkan tanda # sesuai dengan opsi yang dipilih. Berikan hak akses eksekusi agar dapat dijalankan kemudian eksekusi untuk melakukan mailbox

chmod +x /srv/backup-mailbox.sh
sh /srv/backup-mailbox.sh

Script tersebut juga dapat didownload pada link berikut : backup-mailbox, ganti txt menjadi sh agar dapat dieksekusi

Silakan dicoba dan semoga bermanfaat 😀

25 comments

  1. Untuk script nya Restore gimana yah, agar sang admin dapat restore sekaligus dari semua hasil backup yang dihasilkan. Terimakasih.

  2. salam kenal, saya punya kasus mailbox belum sempat ter-restore sudah ada inbox masuk, nah bagaimana caranya supaya isi inbox (yang baru) tidak hilang (tertimpa) ketika saya me-restorekan mailbox backup. terima kasih

    1. Hi kang Dani,

      Untuk backup sesuai abjad, tinggal tambahkan saja parameter sort pada bagian Looping user. Kurang lebih nantinya jadi seperti ini :

      su – zimbra -c ‘zmprov -l gaa | sort’

  3. Terimakasih Kang Ahmad….
    Cuma gak bisa ya kalau saya hanya ingin ambil mailbox yang depannya “a” saja…

    Juga kalau saya mau save ke ext. hdd pake parameter apa ya?

    Terimakasih banyak

  4. Terimakasih Kang,
    Sudah di test dan berhasil…juga saya mohon ijin untuk “otak-atik” script nya untuk keperluan saya

  5. ini backup online apa offline kang..saya coba backup ada error pipe line gt .apakah masalah backupnya jika ada dua domain dalam satu server .

  6. Kang Ahmad,

    Kalau muncul
    ERROR: service.AUTH_EXPIRED (auth credentials have expired) saat melakukan bulk backup itu kenapa ya? Awalnya normal lalu kemudian muncul error tsb.
    Kira-kira solusinya bagaimana?

    Terimakasi

    1. Hi kang Dani,

      Coba ubah script nya dan tambahkan -t 0 sebelum getRestURL. Jadi contohnya seperti berikut :

      /opt/zimbra/bin/zmmailbox -z -m user@domain.com -t 0 getRestURL “//?fmt=tgz” > /tmp/account.tgz
      
      1. Iya pak Ahmad sudah saya pilih berdasarkan tanggal tertentu sbb:

        ## Berdasarkan Tanggal Tertentu, Misalnya tanggal 29 Sept 2013. Jika ingin tanggal yang lain, sesuaikan format-nya dengan mengikuti format %m/%d/%Y
        #
        query=”&query=date:04/02/2017″

        Terimakasih

          1. Saya cek menu dari monitor-server statistik-mailbox Quota pada Admin Zimbra ada beberapa yg error tapi persentasi mailboxquotanya sudah berisi beberapa persen pak artinya tidak 0 persen. Misalnya ada yg sudah 15% mailbox quotanya tapi error waktu backup. Terimakasih!

          2. Hi pak Horas,

            Maksud saya adalah apakah email pada tanggal yang hendak dibackup itu ada pada mailbox yang bersangkutan? jika tidak ada, pesan no data found sudah sesuai dengan yang ditampilkan script

          3. Baik pak Ahmad, nampaknya memang betul pak karena mailboxnya kosong. Terimakasih pak tutorialnya!

            Sukses!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.