Sabtu, 16 April 2011

Backup Otomatis menggunakan Rsync melalui protokol ssh

Kebetulan di Kantor saya menggunakan beberapa Server, dan untuk Backup ada yang menggunakan DRDB, tapi itu bukan pembahasan, dan saya hanya membahas Backup otomatis menggunakan Rsync.
Saya terus terang sangat berterima kasih dengan Webset http://www.otakudang.org, karena web ini yang telah menolong untuk pertama kali saya belajar Backup di linux, dan baru sekarang sempet untuk menulisnya.




Nah, berikutnya, bagaimana saya bisa membuat rsync login otomatis melalui ssh di server remote? Ini adalah permasalahnya.

Asumsi


  1. Content web di kedua host sudah sama untuk permulaan, sehingga untuk postingan selanjutnya, kedua host tersebut akan melakukan sinkronisasi sendiri. Sedangkan cara-cara pemindahan data dari host satu ke host lainnya diluar scope pembahasan ini.
  2. Host MySQL server mengijinkan host lainnya untuk mengakses database di server ini. Periksa firewall/ACL dan permission di database server.
  3. rsync menggunakan protokol SSH dengan autologin. Sebenarnya bukan praktikal security yang bagus, saya hanya pengen mudah saja, dan ini sudah cukup, kecuali saya punya musuh di NSA dan data yang saya muat adalah data rahasia negara :-P. Jadi, use with your own caution!
  4. Oh ya, sehubungan server SQL hanya ada satu, kemungkinan struktur direktori web harus sama. Jika tidak, akali dengan ln -s. Contoh:

    direktori data web di server pertama adalah /home/www1/public_html sedangkan direktori data web di server kedua adalah /usr/home/www2, dan privilege akses di kedua server tersebut lebih leluasa di server kedua, maka saya jalankan perintah seperti:

    shell> mkdir -p /home/www1
    shell> ln -s /usr/home/www2 /home/www1/public_html

Langkah-langkah


Sebelum saya bisa menjalankan rsync, saya harus bisa membuat host www1.otakudang.org (untuk selanjutnya saya sebut sebagai www1 saja) bisa melakukan autentikasi ke www2.otakudang.org (untuk selanjutnya saya sebut sebagai www2 saja) secara otomatis (tanpa ditanya password).

Pada server www1 saya melakukan ini:
shell> ssh-keygen -f qlogin -t rsa

pada saat ditanyakan password yang akan digunakan, saya ketik Enter dua kali saja untuk membuat private key saya tidak dipassword.

Perintah di atas akan menghasilkan dua file yaitu qlogin dan qlogin.pub. File qlogin.pub adalah public key server www1. File ini kemudian saya transfer ke server www2 sebagai file .ssh/authorized_keys2:
shell> scp qlogin.pub www2@www2.otakudang.org:/home/direktori/www2/.ssh/authorized_keys2

Lalu kita coba test login dari server www1:
shell> ssh –i qlogin www2@www2.otakudang.org

Jika langkah-langkahnya benar, maka saya tidak akan ditanyakan password dan langsung disuguhi console shell di server www2.

Berikutnya saya mengarahkan www2 untuk menyimpan semua database nya di server database yang ada di www1. Lalu untuk sinkronisasi data selain database (file mp3, gambar, dan lain sebagainya yang saya upload di www2), saya membuat script sederhana seperti dibawah ini di server www1 dan kita berinama blogsync:
shell> pico blogsync
#!/bin/bash
/usr/bin/rsync -e "ssh -i qlogin -l www2" -avz www2@www2.otakudang.org:/server/iix/otakudang /server/international/otakudang

shell> chmod u+x blogsync

Keterangan: direktori /server/iix/otakudang adalah direktori di www2 yang akan saya sinkronisasi ke direktori /server/international/otakudang di server www1.

Lalu saya setup ,crontab :
shell> crontab –e
*         23          *          *          *          /path/to/blogsync

Crontab di atas artinya adalah www1 akan melakukan sinkronisasi file di www2 setiap pukul 11 malam waktu setempat. Saya memilih ini karena saya anggap trafik pada jam segitu tidak padat.

Sumber : http://www.otakudang.org/

1 komentar:

  1. Trims, saya tambahkan --update agar tidak setiap saat copy file yang sudah pernah di copy.

    =========

    #!/bin/bash
    /usr/bin/rsync -e "ssh -i qlogin -l www2" -avz --update www2@www2.otakudang.org:/server/iix/otakudang /server/international/otakudang

    ========

    BalasHapus

Silahkan beri komentar ?