Script Sederhana untuk Live Backup pada Zimbra Mail Server

replikasi

Catatan : Tulisan ini merupakan artikel yang saya kirimkan ke website Komunitas Zimbra Indonesia. Saya sempat maju mundur mengirimkannya karena khawatir scriptnya terlalu sederhana dan terlalu memalukan untuk dieskpos. Namun dengan berasumsi bahwa sederhana tak apa-apa asalkan bermanfaat, saya memutuskan untuk mempublikasikannya…

***

Salah satu masalah utama yang dihadapi selama mengelola email server adalah kemampuan untuk melakukan hot/live backup, proses backup yang dijalankan pada saat Zimbra sedang aktif.

Zimbra Mail Server versi commercial memiliki kemampuan live backup secara default. Hal ini merupakan salah satu perbedaan/feature yang tidak disertakan pada versi open source selain support online dari Zimbra dan kemampuan akses BlackBerry.

Meski demikian, versi open source bukan tanpa pilihan backup sama sekali πŸ™‚

Berbagai script backup yang dapat diaplikasikan pada Zimbra Mail Server versi Open Source biasanya membutuhkan proses penghentian service Zimbra untuk beberapa saat. Kesemuanya dilakukan secara otomatis dan biasanya menggunakan fasilitas rsync yang mampu menyalin data ukuran besar secara cepat.

Saya pribadi, setelah mencoba berbagai skenario akhirnya memutuskan untuk menempatkan Zimbra Mail Server didalam sistem virtual semacam VMWare atau VirtualBox. Cara ini jauh lebih aman dan lebih mudah pengelolaannya dan satu hal yang menyenangkan, Zimbra Mail Server yang berjalan didalam VirtualBox openSUSE 11.1 saya bisa dibackup secara live. Hal ini bisa terjadi karena yang dibackup bukan Zimbra secara sistem melainkan image dari sistem/harddisk virtual.

Konsep ini semestinya bukan hanya dapat diterapkan di openSUSE/SLES melainkan juga pada distro lain seperti Ubuntu, Red Hat, Centos, Fedora maupun Debian.

Kemampuan backup disaat sedang aktif ini memberikan banyak manfaat, misalnya kemudahan backup dan restore serta proses penyalinan data yang berlangsung secara cepat.

Berikut adalah script sederhana untuk menjalankan backup Zimbra yang saya lakukan di email server perusahaan, dengan konfigurasi sebagai berikut :

  1. IP 192.168.0.4 adalah server IBM X Series 3400 yang menjalankan openSUSE 11.1. Didalamnya ada VirtualBox versi terakhir yang menjalankan openSUSE 10.3+Zimbra Mail Server. Image Zimbra disimpan di folder /srv/hd2/vbox-zimbra. Image bersifat dynamic storage. Saya cadangkan 80 GB dan baru digunakan sebesar 10 GB untuk user account sekitar 100 user. Sebagian user menggunakan email client dan sebagian lagi menggunakan webmail.
  2. Script diletakkan di server backup dengan IP 192.168.0.7. Dijalankan oleh cron job secara periodik 4 jam sekali. Sesuaikan waktu dan periode dengan kebutuhan ditempat anda, karena dikantor saya setting tersebut cukup memadai. Email client menarik data setiap 10 menit sekali.
  3. Backup ini bukanlah backup dengan tujuan menghasilkan 2 server yang similar/ identik sama persis 100%. Jika itu yang diinginkan, yang anda perlukan adalah duplikat/backup mx server yang otomatis melakukan replikasi.
  4. Proses backup yang dilakukan akan berlangsung secara otomatis kedalam 2 tahap. Tahap pertama berlangsung secara periodik sesuai waktu backup dan disimpan kedalam folder Current. Tahap kedua adalah menyimpan backup mingguan kedalam folder Tahun/Bulan/Minggu X. Hal ini karena perusahaan menerapkan kebijakan backup harian dan backup mingguan. Data backup mingguan akan disalin kembali ke server backup cadangan.
  5. Untuk mengantisipasi data backup yang menyita kapasitas harddisk, script diset untuk secara otomatis menghapus data backup mingguan 1 bulan yang lalu.
  6. Script ini harus dipadukan dengan cron jobs (kecuali anda mau secara manual menjalankannya πŸ˜› ) dan menggunakan fasilitas rsync. Silakan merujuk pada tulisan mengenai rsync untuk contoh konfigurasinya.
  7. Beware : Script yang dibuat masih sangat sederhana dan kemungkinan tidak mencerminkan kode pemrogramman yang baik. Maklum, selama bertahun-tahun melakukan coding dengan Visual Basic πŸ˜› . Jika anda mampu memodifikasi kebentuk lain yang lebih baik saya akan sangat mengapresiasinya.

#!/bin/bash

#Hapus Layar
clear

echo "##################################################################################"
echo "# Zimbra-virtual-backup                                                          #"
echo "# Skrip untuk backup virtual image zimbra (vmware, virtualbox) secara periodik   #"
echo "# Masim "Vavai" Sugianto - vavai@vavai.com - http://vavai.com/blog/v2            #"
echo "# Dikirimkan pada Komunitas Zimbra Indonesia - http://zimbra.web.id              #"
echo "# Lisensi : GPL, General Public License                                          #"
echo "##################################################################################"

sourcedir="192.168.0.4::srv/hd2/vbox-zimbra/"
targetdir="/srv/www/htdocs/backup/backup-zimbra/"
targetutama="$targetdir/Current/"
bulan_skrg=$(date '+%m')
tahun_skrg=$(date '+%Y')
tgl_skrg=$(date '+%d')
minggu=$(($tgl_skrg/7))

#Process

if [ $minggu -eq 1 ];
then
targetdir2="$targetdir`date +%Y`/`date +%m`/Minggu-I"
mingguan="1"

elif [ $minggu -eq 2 ];
then
targetdir2="$targetdir`date +%Y`/`date +%m`/Minggu-II"
mingguan="1"

elif [ $minggu -eq 3 ];
then
targetdir2="$targetdir`date +%Y`/`date +%m`/Minggu-III"
mingguan="1"

elif [ $minggu -eq 4 ];
then
targetdir2="$targetdir`date +%Y`/`date +%m`/Minggu-IV"
mingguan="1"

elif [ $minggu -eq 5 ];
then
targetdir2="$targetdir`date +%Y`/`date +%m`/Minggu-V"
mingguan="1"

else
targetdir2="$targetdir/Current/"
mingguan="0"

fi

#buat folder
mkdir -p "$targetdir/Current/"
mkdir -p "$targetdir`date +%Y`/"
mkdir -p "$targetdir`date +%Y`/`date +%m`/"
mkdir -p $targetutama

#backup proses tahap 1

rsync -avh --delete-after $sourcedir $targetutama

#backup proses tahap 2 (backup mingguan)

if [ $mingguan -eq "1" ]; then
rsync -avh --delete-after $targetutama $targetdir2;
fi

#Hapus folder 1 bulan yang lalu

if [ $bulan_skrg -eq 1 ] ; then
vbulan=12
vtahun=$(($tahun_skrg-1))
else
vbulan=$(($bulan_skrg-1))
vtahun=$tahun_skrg
fi

if [ $vbulan -lt 10 ];
then
vbulan=0$vbulan
fi

if [ $minggu -eq 1 ];
then
deldir="$targetdir$vtahun/$vbulan/Minggu-I"

elif [ $minggu -eq 2 ];
then

deldir="$targetdir$vtahun/$vbulan/Minggu-II"

elif [ $minggu -eq 3 ];
then
deldir="$targetdir$vtahun/$vbulan/Minggu-III"

elif [ $minggu -eq 4 ];
then
deldir="$targetdir$vtahun/$vbulan/Minggu-IV"

else
deldir="$targetdir$vtahun/$vbulan/Minggu-V"

fi

rm -rf $deldir

#mail -s "ini subject" "vavai@vavai.com" < "Test konfirmasi backup Zimbra"

Kalau malas mengetik, silakan download script-backup-zimbra πŸ˜›

Posted by vavai on May 16th, 2009 and is filed under Linux. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

9 Responses to “Script Sederhana untuk Live Backup pada Zimbra Mail Server”

  1. dudi May 16th, 2009, 7:57 pm

    aku kurang setuju kalo backup mail server masih berada dalam satu mesin yang sama (physic), walaupun secara logic berbeda (virtual).

    Kalo servernya benar-benar rusak fisik, misal mati listrik atau hdd badblock, otomatis mail backup belum tentu berfungsi dengan baik, apalagi kalo host ataupun guest mati dua2nya. pasti email dari luar gak akan pernah bisa masuk.

    Khusus untuk primary dns dan secondary DNS serta untuk primary mx dan secondary mx kalo menurutku ada baiknya dipisah secara fisik karena pertimbangan seperti diatas.

    eh, tapi memang beda-beda sih caranya orang. hehehe

  2. Vavai May 16th, 2009, 9:29 pm

    @Dudi,

    Lho, skenario diatas juga kan memang beda mesin boss, bukan sekedar beda antara host dengan guest.

    Dalam contoh diatas, IP 192.168.0.4 adalah server host (openSUSE 11.1) sedangkan Zimbra ada di guest dengan IP 192.168.0.10.

    Server backup adalah server lain yang ada secara fisik di komputer lain dengan IP 192.168.0.7

    Mengenai backup MX, saya menggunakan Zimbra dengan Google Apps dan ISP relay jadi semestinya cukup aman jika ada problem di server Zimbra sendiri.

    Anyway, thanks buat reminder dan masukannya.

  3. david May 16th, 2009, 10:29 pm

    Pak, kapan nih release replicate server u/ zimbra nya? Supaya backup MX nggak numpang2 lagi πŸ˜€
    Yang sudah di wikinya zimbra susah implementasinya (*saking malesnya)
    Ditunggu how to lang ID-nya

    Regards.

  4. dudi May 16th, 2009, 10:33 pm

    owh.. kirain itu topologi di atas itu hanya topologi logic untuk mesin virtual, ternyata bukan to. hehehe.. maaf maaf.

    kirain ip 192.168.0.4 dan 192.168.0.7 itu dalam satu mesin yang sama.

  5. vavai May 17th, 2009, 6:00 am

    @David,
    Menyusul, perlu di proof-reader dulu alias ditesting dulu supaya tulisannya benar-benar applicable πŸ™‚

  6. david May 17th, 2009, 8:08 am

    Siyap menanti Pak….
    Butuh tester saya jg siyap klo dibutuhkan πŸ˜€

    Thanks responnya….

    Regards.

  7. Agus Nur Purwanto July 17th, 2014, 3:18 pm

    Kalau mau merestore backupnya bagaimana caranya Pak..?

Trackbacks

  1. Zimbra Mail Server : Pentingnya Backup Berkala | Blog Vavai
  2. Tips Daily Backup/Restore Zimbra Mail Server (Backup Harian) | Migrasi Windows Linux

Leave a Reply