Rabu, 27 Januari 2016

Script

Backup Otomatis dengan Penamaan File Berdasarkan Tanggal Menggunakan Rsync, Tar, Cron, dan SSH di Ubuntu Server

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 :

Server utama (192.168.100.3) --------- (192.168.100.1) Server backup

1. Pertama, pastikan kedua buah server sudah terinstall ssh :

rizal@server-utama:~$ sudo apt-get install ssh
rizal@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 :

rizal@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 :

rizal@server-utama:~$ cd
rizal@server-utama:~$ scp .ssh/id_rsa.pub rizal@192.168.100.1:


4. Sekarang pindahlah ke Server Backup, kemudian eksekusi perintah berikut :

rizal@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 :

rizal@server-backup:~$ mkdir ~/.ssh
rizal@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 :

rizal@server-backup:~$ sudo service ssh restart

5. Selanjutnya, kalian perlu membuat direktori tempat menyimpan file-file backupnya :

rizal@server-backup:~$ sudo mkdir /backup
rizal@server-backup:~$ sudo chown rizal:rizal /backup/


6. Pindahlah lagi ke komputer Server Utama. Kemudian cobalah untuk meremote Server Backup, seharusnya kalian tidak akan diminta password lagi sekarang :

rizal@server-utama:~$ ssh rizal@192.168.100.1

Jika sudah exit saja :

rizal@server-backup:~$ exit
rizal@server-utama:~$


7. Sekarang saatnya untuk membuat script untuk membackupnya. Pada kasus ini, saya akan mencoba membackup direktori /home/rizal/Public/Novel. Direktori ini nantinya akan di kompress dan dimasukkan ke dalam direktori /home/rizal/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 :

rizal@server-utama:~$ cd /home/rizal/Public
rizal@server-utama:~
/home/rizal/Public$ nano script-backup.sh

Didalamnya isikan dengan script berikut ini :

#!/bin/sh
tar -czvf forbackup/backup-$(date '+%d%m%Y').tgz Novel/
rsync -e ssh --progress --partial --size-only -vz --log-file=/rsynclog/rsynclog.log /home/rizal/Public/forbackup/* rizal@192.168.100.1:/backup
rm -v /home/rizal/Public/forbackup/*
exit 0


Simpan dan tutup file tersebut.

Beri hak akses executable :

rizal@server-utama:~/home/rizal/Public$ chmod +x script-backup.sh

8. Masih di direktori /home/rizal/Public, cobalah tes dengan menjalankan script tersebut.

rizal@server-utama:~/home/rizal/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.

rizal@server-utama:~$ crontab -e

Pada baris paling bawah isikan dengan script berikut ini :

* 00 * * * sh /home/rizal/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 :)

Tidak ada komentar:

Posting Komentar