Konsep dari tulisan ini adalah untuk dapat mengkompres sebuah direktori yang ingin dibackup menjadi file tar.gz yang penamaannya sesuai tanggal backupnya (misal : backup-01092014.tar.gz, backup-02092014.tar.gz), kemudian file backup tersebut akan dikirim dan disinkronisasikan ke server backup khusus menggunakan rsync dan ssh, serta tidak lupa seluruh proses tersebut dijadwalkan dengan crontab agar dapat dieksekusi secara otomatis setiap hari.
Topologi :
1. Pertama, pastikan kedua buah server sudah terinstall ssh :
ryan@server-utama:~$ sudo apt-get install ssh
ryan@server-backup:~$ sudo apt-get install ssh
2. Kemudian kita harus membuat agar server utama tidak perlu lagi memasukkan password setiap ingin meremote server backup via ssh. Ini untuk membuat rsync dapat melakukan pengiriman file via ssh ke server backup nantinya.
Dari Server Utama eksekusi perintah berikut :
ryan@server-utama:~$ ssh-keygen
Jika diminta memasukkan apapun, jangan diisi apa-apa. Tekan Enter saja terus sampai selesai.
3. Setelah itu kirimkan file id_rsa.pub ke Server Backup :
ryan@server-utama:~$ cd
ryan@server-utama:~$ scp .ssh/id_rsa.pub [email protected]:
4. Sekarang pindahlah ke Server Backup, kemudian eksekusi perintah berikut :
ryan@server-backup:~$ cat id_rsa.pub >> ~/.ssh/authorized_keys
Jika muncul error ~/.ssh/authorized_keys: No such file or directory , itu berarti Server Backup kalian belum pernah menggunakan ssh sama sekali sebelumnya. Kalian tinggal membuat direktorinya secara manual :
ryan@server-backup:~$ mkdir ~/.ssh
ryan@server-backup:~$ chmod 700 ~/.ssh
Setelah itu ulangi perintah : cat id_rsa.pub >> ~/.ssh/authorized_keys . Jika tidak muncul peringatan error lagi, maka berarti sudah berhasil. Lalu jangan lupa restartlah service ssh kalian :
ryan@server-backup:~$ sudo service ssh restart
5. Selanjutnya, kalian perlu membuat direktori tempat menyimpan file-file backupnya :
ryan@server-backup:~$ sudo mkdir /backup
ryan@server-backup:~$ sudo chown ryan:ryan /backup/
6. Pindahlah lagi ke komputer Server Utama. Kemudian cobalah untuk meremote Server Backup, seharusnya kalian tidak akan diminta password lagi sekarang :
ryan@server-utama:~$ ssh [email protected]
Jika sudah exit saja :
ryan@server-backup:~$ exit
ryan@server-utama:~$
7. Sekarang saatnya untuk membuat script untuk membackupnya. Pada kasus ini, saya akan mencoba membackup direktori /home/ryan/Public/Web. Direktori ini nantinya akan di kompress dan dimasukkan ke dalam direktori /home/ryan/Public/forbackup dengan nama backup-SESUAITANGGAL.tar.gz. Kemudian, file backup-SESUAITANGGAL.tar.gz ini akan kita kopikan ke Server Backup dengan menggunakan rsync. Dan agar di Server Utama tidak kepenuhan harddisknya, file hasil kompres yang sudah kita buat akan langsung otomatis dihapus setelah dikirim ke Server Backup.
Dari Server Utama ketikkan perintah berikut ini :
ryan@server-utama:~$ cd /home/ryan/Public
ryan@server-utama:~/home/ryan/Public$ nano script-backup.sh
Didalamnya isikan dengan script berikut ini :
#!/bin/sh
tar -czvf forbackup/backup-$(date ‘+%d%m%Y’).tgz Web/
rsync -arvz -e ‘ssh -p 2222’ /home/ryan/Public/Web/* [email protected]:/backup
rm -v /home/ryan/Public/forbackup/*
exit 0
Simpan dan tutup file tersebut.
Beri hak akses executable :
ryan@server-utama:~/home/ryan/Public$ chmod +x script-backup.sh
8. Masih di direktori /home/ryan/Public, cobalah tes dengan menjalankan script tersebut.
ryan@server-utama:~/home/ryan/Public$ ./script-backup.sh
Jika berhasil seharusnya tampilannya akan seperti berikut :
9. Langkah terakhir adalah memasukkan script ini dalam tugas cron. Kita akan membuat script ini dieksekusi setiap jam 00.00 setiap harinya.
ryan@server-utama:~$ crontab -e
Pada baris paling bawah isikan dengan script berikut ini :
* 00 * * * sh /home/ryan/Public/script-backup.sh
Jika sudah simpan.
Sampai sini seharusnya semua akan berjalan sesuai dengan konsep yang sudah saya tuliskan di awal artikel ini.
Semoga bermanfaat ?