Kali ini saya akan membuat sebuah tutorial melakukan Backup antar server Linux dengan mempergunakan RSync
Server A adalah web server utama berisi semua file-file website.
Server B adalah web server cadangan yang bertugas melakukan backup dari Server A ke Server B
1 2 |
Syncronisasi file dan database Server A > -------- > Server B |
Rsync saya perlukan untuk proses backup antar server saya, sehingga apabila ada masalah dengan server utama, saya tinggal mengganti DNS agar mengarah ke server cadangan. Syarat rsync kali ini adalah jika kita sudah bisa Login dari Server B ke Server A tanpa mempergunakan password.
Karena semua server saya pada saat ini adalah berbasis Debian, maka berikut adalah langkah-langkahnya :
1. Login ke Server A
2. Melakukan instalasi Rsync dengan mempergunakan perintah berikut :
# apt-get clean
# apt-get install rsync
# exit
3. Login ke Server B
2. Melakukan instalasi Rsync dengan mempergunakan perintah berikut :
# apt-get clean
# apt-get install rsync
4. Melakukan pembuatan database dan juga mengijinkan user untuk mengakses database tersebut karena belum ada
123456789 # mysql -u rootmysql> create database namadatabase;Berfungi untuk membuat database dengan nama namadatabasemysql> grant usage on *.* to namauserdb@localhost identified by 'passworddb';Berfungsi untuk mengijinkan user namauserdb menyambung ke server dari localhost dengan password passworddb. Jangan lupa mempergunakan ' pada awal dan akhir password.mysql> grant all privileges on namadatabase.* to namauserdb@localhost;Berfungsi mengijinkan akses user namauserdb pada database namadatabasemysql> flush privileges;mysql> exit;Untuk memastikan kita bisa masuk ke MySQL server dengan user dan password tadi, maka :
1 # mysql -u namauserdb -ppassworddb namadatabase
5. Melakukan rsync untuk menduplikasi isi dari direktory html dari Server A ke Server B :
1 |
# rsync -avzpog -e ssh root@173.xxx.xxx.xxx:/var/www/www.erawanarifnugroho.com /var/www/ |
Jika Port SSH sudah diganti selain Port 22, maka berikut adalah perintahnya :
1 # rsync -avzpog -e 'ssh -p sshport' user@server.ip.address:/mastersource /backupdestination
1 # rsync -avzpog -e 'ssh -p 2222' root@173.xxx.xxx.xxx:/var/www/www.erawanarifnugroho.com /var/www/
Kalau hanya untuk membackup website statik, langkah ini sudah cukup 🙂
6. Melakukan backup Database MySQL dari Server A ke Server B :
1 # ssh root@173.xxx.xxx.xxx 'mysqldump -q --skip-lock-tables -u namauserdb --password=passworddb namadatabase' > /root/wp.sql
7. Melakukan import Database Backup dari Server A ke Server B :
1 |
# mysql -u namauserdb --password=passwordb namadatabase < /root/wp.sql |
Setelah mengikuti semua langkah-langkah di atas, maka pada Server B di direktory /var/www/www.erawanarifnugroho.com akan tercipta sebuah direktory dengan isi yang sama dengan Server A.
Untuk automatisasi proses backup website dengan rsync pada tiap hari, tengah malam, Anda tinggal menambahkan script-script diatas pada cron.
Pada Debian, secara default nano belum terinstall. Karena editor kesukaan saya adalah nano, maka kita install nano terlebih dahulu.
# apt-get install nano
Kemudian kita buat sebuah script yang berisi perintah untuk rsync sebagai berikut :
# nano /script_backup
Isi dengan perintah berikut :
#! /bin/sh
rsync -avzpog -e ‘ssh -p 2803’ root@174.xxx.xxx.xxx:/home/usersatu /home/
rsync -avzpog -e ‘ssh -p 2803’ root@174.xxx.xxx.xxx:/home/foldersatu /home/
Untuk menyimpannya, tekan Ctrl + O
Untuk keluar dari nano, tekan Ctrl + X
Sekarang kita mengatur konfigurasi crontab. Karena saya hanya akan mempergunakan nano sebagai editor, maka saya akan merubah editor dari vi ke nano :
# export EDITOR=/usr/bin/nano
Kemudian edit isi dari crontab :
# crontab -e
Masukkan kode berikut :
# m h dom mon dow command
30 * * * * sh /root/script_backup
Untuk menyimpan, tekan Ctrl + O
Untuk keluar, tekan Ctrl + X
Maksud dari crontab di atas adalah, setiap menit ke 30, script remote_backup yang tadi kita buat, akan dijalankan. Dan script remote_backup tadi, akan mensyncronisasikan file dari server utama, ke server backup.
Kalau ingin script dijalankan setiap hari jam 12 malam, maka :
0Ă‚Â 12 *Ă‚Â *Ă‚Â *Ă‚Â sh /root/script_backup