Live Backup Untuk Zimbra Open Source Edition

Salah satu problem pada Zimbra Open Source Edition adalah tidak adanya fitur backup. Fitur backup hanya dimiliki pada Zimbra Network Edition.

Beberapa hari yang lalu, saya sempat diskusi dengan salah satu kawan tentang live backup untuk Zimbra Open Source Edition. Dan dia memberikan beberapa URL sebagai referensi untuk saya baca. Yang pertama referensinya adalah tentang ZCS to ZCS Migrations. Dan referensi yang kedua adalah sebuah script perl untuk melakukan backup semua account di zimbra.


Berbekal dua referensi itu saya membuat bash script untuk melakukan backup account user di zimbra. Script ini akan melakukan backup account untuk semua user. Selain itu proses backup juga hanya dilakukan di mesin yang terinstalasi zimbra. Oh, hampir lupa, untuk restore data bisa dilakukan dengan membuat sebuah account kosong dan kemudian berkas tgz ini di import melalui menu Preferences > Export/Import di zimbra.

Keuntungan menggunakan backup dengan metode seperti ini adalah tidak memerlukan proses stop/start pada zimbra. Dengan kata lain zimbra masih berjalan dengan normal dan semua layanan masih bisa diakses dengan normal dan sementara itu proses backup tetap berjalan. Inilah yang saya maksud dengan “Live” backup :).

Script ini rencananya nanti akan saya tambahkan fitur rsync melalui ssh, penambahan fitur rsync dan ssh di inspirasi dari wiki zimbra mengenai backup.
Ide besarnya adalah sebagai berikut:
  1. Backup masing-masing account di zimbra dalam format tgz. Misal di backup di /tmp/zimbra (anggap saja ini dilakukan di server A)
  2. Ekstrak masing-masing tgz di dalam folder /tmp/zimbra tersebut ke sebuah direktori tertentu misal ke /tmp/ekstrak
  3. Lakukan sinkronisasi /tmp/ekstrak ke server lainnya (misalnya di server B di direktori /tmp/newbackup) dengan menggunakan rsync.
  4. Selanjutnya bash script ini akan melakukan proses kompresi masing-masing account dalam format tgz di server B, atau bisa saja ada script tersendiri di server B yang akan melakukan tahapan ini.
  5. Kompress semua account format tgz yang ada di /tmp/newbackup (Server B) ke dalam satu kompresi besar misalkan dalam format tar.bz2 dengan label tanggal, bulan dan tahun.
  6. Move/copy berkas tar.bz2 tersebut ke tape drive atau ke hard disk eksternal.
  7. Hapus semua berkas-berkas yang sudah tidak dibutuhkan, namun jangan hapus direktori /tmp/newbackup yang ada di server B, karena nanti direktori ini akan disinkronisasi lagi dengan direktori /tmp/ekstrak yang ada di server A.
  8. Aktifkan crontab untuk script ini agar melakukan proses secara berkala.
Sebenarnya proses nomor 2, 3, 4 dan 5 bisa di-bypass, jadi dari nomor 1 bisa langsung loncat ke proses nomor 5. Jika langsung di-bypass maka proses kompresi di nomor 5 akan langsung dilakukan di server A. Setelah itu tinggal ditransfer ke server lain (bisa melalui scp, rsync ataupun metode lainnya). Salah satu kelemahan jika di-bypass maka pada saat proses transfer data akan berjalan lama jika file yang di backup berukuran besar.

Buat yang mau memodifikasi script ini silakan saja, tapi jangan lupa dishare lagi ya.





http://adf.ly/biRaH     http://adf.ly/biSP8

0 comments:

Post a Comment

Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]
close
close