02 Januari 2009

Mirroring Samba/NFS server dengan rsync

Pernah nggak alamin kehilangan file di server gara-gara pihak MIS salah perintah? Moga-moga jangan sampe yah. Tapi itu mungkin aja bisa terjadi kan. Karena disini MIS nya baru pake Linux. Beberapa perintah dasar terminal, seperti cp (copy) mv (move/rename) rm (remove) rsync (mirroring) dan laennya, kurang satu karakter saja bisa menghasilkan hal yang berlawanan.

So pointnya, data di server harus selalu terbackup atau tersinkron. Jika sewaktu-waktu ada hal seperti itu, gue akan gampang selametin keaadaan seperti ini. Disamping itu, hal yang satu ini juga untuk menghindari beberapa hal berikut:
  • Kesalahan disisi user. Kadang mereka hapus file secara sengaja dan pengen merestorenya di laen waktu.
  • Kesalahan disisi user. Kadang mereka hapus file secara nggak sengaja. Tau deh gemana 1 folder di departmen folder bisa hilang gitu aja. Mungkin aja ada yang salah klik mouse. Namanya juga 1 departemen kemampuannya bisa berbeda-beda.
  • Menghindari user yg resign dengan menghapus semua filenya :-p
  • Proses restore yang cepat dibanding restore dari tape backup
  • Dan laennya ...
Hanya dengan 1 harddisk gede (murah kan sekarang), bisa selametin banyak hal. Asal slalu pantau prosesnya. Gue sih sinkron data di server PDC ke salah satu harddisk di BDC server. Hanya dengan "rsync" saja. Tiap malem tuh. Dan paginya bisa dapat report rsync via email.

PDC gue jalan dengan service Samba dan NFS. Dan gue jalankan rsync di BDC. Loe gak harus taruh di BDC. Itu cuman istilah gue agar pengguna Windows server mudah ngertinya. Karena cara ini bisa backup apa aja kalo mau. Nggak cuman Samba atau NFS. Dan nggak cuman di Linux. Windows juga bisa. Kan rsync bisa jalan di Windows juga ;-)

Untuk gunakan script ini, jangan lupa install openssh-server di PDC dan BDC. Lalu coba gunakan otentikasi public key untuk user root dari BDC ke PDC. Detilnya coba pelajarin di help.ubuntu.com. Dengan cara ini, script di BDC akan running tanpa tanya username & password jika konek ke openssh-server di PDC.

Script ini save ke /etc/cron.daily dan jangan lupa permission set ke 755. Jangan lupa sesuaikan 3 baris definisinya:


#!/bin/bash
#
#Definition of source folder, mirror folder and trash folder
#
# sourcedir => Folder Data di PDC
# backupdir => Mirror folder di BDC
# trashdir  => Archive deleted file di BDC
#
sourcedir="root@pdc.domain.com:/svr/"
backupdir="/svr/mirror/pdc/"
trashdir="/svr/mirror/deleted/"
#
#Process
trashdir2="$trashdir`date +%Y`/`date +%m`/`date +%d`"
/bin/mkdir -p $trashdir2
/usr/bin/rsync -avh --stats --delete \
    --exclude=temp/ \
    --backup --backup-dir=$trashdir2 $sourcedir $backupdir


Agar semua user bisa restore sendiri tanpa harus lewat MIS, tentu saja di BDC harus juga miliki user & grup yang sama dengan PDC. Backend LDAP utk Samba/NFS disini akan menunjang sekali. Tambahkan share folder ini di smb.conf pada BDC.

[mirror]
    comment = Backup Folders
    path = /svr/mirror/
    writeable = no
    guest ok = no
    force group = "Domain Users"

Dan semua user bisa mengaksesnya dari alamat ini:

\\bdc\mirror\pdc\
\\bdc\mirror\deleted\<tahun>\<bulan>\<tanggal>\

Alamat ke 1 di atas adalah data 1 hari sebelumnya. Alamat ke 2 itulah yang berisi semua file yang pernah di hapus user. Karena stiap kali rsync melihat perubahan di PDC, file yang ada di BDC, nggak langsung di hapus. Melainkan di archive ke $trashdir dengan pengelompokan berdasar tanggal, bulan dan tahun.

Ok. Smoga bermanfaat deh




Tidak ada komentar: