Backup dengan memakai RSync pada Debian

· 2 min read

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

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

# mysql -u root
mysql> create database namadatabase;
Berfungi untuk membuat database dengan nama namadatabase
mysql> 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 namadatabase
mysql> flush privileges;
mysql> exit;

Untuk memastikan kita bisa masuk ke MySQL server dengan user dan password tadi, maka :

# mysql -u namauserdb -ppassworddb namadatabase

5. Melakukan rsync untuk menduplikasi isi dari direktory html dari Server A ke Server B :

# 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 :

# rsync -avzpog -e 'ssh -p sshport' user@server.ip.address:/mastersource /backupdestination
# 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 :

# 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 :

# 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