S0t4's Blog

Hanya Catatan dan Mencoba Untuk Berbagi

Saturday, March 12, 2011

Mirroring Website/Data Pakai Rsync

  Blogger Sejati       Saturday, March 12, 2011
Hanya catatan...

Berikut pengalamanku untuk mirroring website internal di kantor pakai rsync.

Serverku pakai Ubuntu 10.10 sebagai SERVER dan Fedora Core sebagai MIRROR dalam satu LAN.
Aku pakai satu komputer sebagai server update dan yang satu sebagai client update dimana setiap ada perubahan (tambah/update/hapus) data di server baru nanti akan otomatis diupdate di client.

Cara ini bisa dilakukan untuk membackup data apa saja, bukan hanya web....

Di setiap komputer harus sudah terinstall SSH dan pastikan port 22 kebuka kalau memakai firewall.
Masalahnya adalah bahwa SSH membutuhkan password untuk log in yang tidak baik jika Anda ingin menjalankan rsync sebagai cron dan celakanya seting password memerlukan interaksi manusia yang tidak kita inginkan.
Tetapi ada solusinya yakni dengan menggunakan public keys yang dibuat di client sehingga saat koneksi dengan SSH nantinya tidak memakai password lagi.

Sebelum mulai, asumsinya adalah:
1. Server : server.example.com IP:192.168.1.1
2. Client/Mirror : mirror.example.com IP:192.168.1.2


Mari kita mulai :

1. Install rsync di di SERVER dan CLIENT
#apt-get install rsync --> di Ubuntu
#yum install rsync --> di Fedora


2. Buat user di SERVER
misal kita buat user 'someuser' dengan home directori /home/someuser dengan login shell /bin/bash dan set passwordnya
#useradd -d /home/someuser -m -s /bin/bash someuser
#passwd someuser


3. Test Rsync dari client
#rsync -avz -e ssh someuser@server.example.com:/var/www/ /var/www/html/

nanti akan keluar sebagai berikut, dan jawab :yes
The authenticity of host 'server.example.com (192.168.1.1)' can't be established.
RSA key fingerprint is 32:e5:79:8e:5f:5a:25:a9:f1:0d:ef:be:5b:a6:a6:23.
Are you sure you want to continue connecting (yes/no)?


terus masukkan password 'someuser', kalau berhasil nanti di cleent folder /var/www/html akan sama dengan folder /var/www di server.

4. Buat keys untuk SSH di CLIENT
kita lakukan ini dari root user
#mkdir /root/rsync
#ssh-keygen -t dsa -b 1024 -f /root/rsync/mirror-rsync-key


nanti akan dilihat seperti ini:
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): [tekan enter]
Enter same passphrase again: [tekan enter]
Your identification has been saved in /root/cron/mirror-rsync-key.
Your public key has been saved in /root/cron/mirror-rsync-key.pub.
The key fingerprint is:
68:95:35:44:91:f1:45:a4:af:3f:69:2a:ea:c5:4e:d7 root@mirror

copy public keys-nya ke server dari client
#scp /root/rsync/mirror-rsync-key.pub someuser@server.example.com:/home/someuser/

public key mirror-rsync-key.pub sekarang sudah ada di /home/someuser di server.

5. Konfigurasi SSH server
Sekarang login melalui SSH pada server sebagai 'someuser' (bukan root!):
mkdir ~/.ssh
chmod 700 ~/.ssh
mv ~/mirror-rsync-key.pub ~/.ssh/
cd ~/.ssh
touch authorized_keys
chmod 600 authorized_keys
cat mirror-rsync-key.pub >> authorized_keys


Sekarang kita ingin mengizinkan koneksi hanya dari client, dan pengguna harus diizinkan untuk hanya menggunakan rsync, jadi kita tambahkan

command="/home/someuser/rsync/checkrsync",from="mirror.example.com",no-port-forwarding,no-X11-forwarding,no-pty

di awal /home/someuser/.ssh/authorized_keys (dikasi spasi dengan isi yang aslinya)

sekarang kita buat script /home/someuser/rsync/checkrsync yang menolak command selain rsync

di SERVER
masih sebagai someuser

mkdir ~/rsync
vi ~/rsync/checkrsync

isinya
#!/bin/sh

case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*) echo "Rejected" ;; *\`*) echo "Rejected" ;; rsync\ --server*) $SSH_ORIGINAL_COMMAND ;; *) echo "Rejected" ;; esac chmod 700 ~/rsync/checkrsync


6. Test rsync dari CLIENT

rsync -avz --delete --exclude=**/stats --exclude=**/error --exclude=**/files/pictures -e "ssh -i /root/rsync/mirror-rsync-key" someuser@server.example.com:/var/www/ /var/www/html/


(-- delete berarti pilihan bahwa file yang telah dihapus pada server.example.com juga harus dihapus di mirror.example.com , --exclude berarti pilihan bahwa file-file /direktori tidak dibackup;. misalnya --exclude =**/error berarti backup "tidak dilakukan pada "/var/www/error")

Seharusnya data sudah ke backup ke client dan tanpa input password lagi...


7. Buat cron job di client

*/5 * * * * /usr/bin/rsync -azq --delete --exclude=**/stats --exclude=**/error --exclude=**/files/pictures -e "ssh -i /root/rsync/mirror-rsync-key" someuser@server.example.com:/var/www/ /var/www/html
http://www.blogger.com/img/blank.gif


Sekarang turunan Rsync ada juga yang under MS Windows.
Salah satunya DeltaCopy yang bisa didownload disini atau disini ...
logoblog

Thanks for reading Mirroring Website/Data Pakai Rsync

Previous
« Prev Post

No comments: