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 ...
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 ...
No comments:
Post a Comment