Friday, June 12, 2015

Cara Backup Direktori Website Beserta Database Dengan Bash Script, Webserver | Debian



Bagi seorang system administrator, sudah pasti mengetahui bahwa fungsi backup sangatlah penting, terutama bila server sudah mempunyai berbagai macam sistem yang tampilan antarmukanya ( GUI ) sudah berbasis web dan sudah pasti juga melayani banyak user ( multi account ) dengan ldap lagi single-sign-on pula, nah database adalah salah satu bagian terpenting yang harus selalu di backup, coba bayangkan saja tiba-tiba ada kasus user secara tidak sengaja menghapus data penting pada salah satu sistem lalu meminta bantuan restore database sebelum hal itu terjadi.
Contoh kasus saya.
  1. Ingin backup direktori seluruh web sistem zabbix [ zabbix.mycompany.co.id ]
  2. Sekalian backup database-nya.
  3. Backup-nya ingin dijalankan terjadwal & berkala.
  4. Ingin juga file backup yang sudah [x] hari di remove secara otomatis agar tidak memenuhi HDD.
  5. Backup-nya pakai bash script & di jalankan terjadwal berkala dengan crontab.
Solusinya sebagai berikut :

Tips.
- Jika tidak mengunakan user root maka gunakan sudo untuk user sudoers.
- Bash script dibawah ini bisa kreasikan untuk melakukan multi backup atau juga backup semua direktori under /var/www/.

1. Membuat direktori tempat menyimpan backup.
root@webserver: mkdir /backup-allweb
#atau
root@webserver: mkdir /tmp/backup-allweb
#atau
root@webserver: mkdir /home/bangandi/backup-allweb

2. Membuat file bash script.
root@webserver: mkdir /backup-script
#atau
root@webserver: mkdir /tmp/backup-script
#atau
root@webserver: mkdir /home/bangandi/backup-script.

Kemudian, buat file bash script-nya dengan format " nama-bashscript.sh ", dibawah ini saya membuat bash script backup-zabbix.sh.
root@webserver: nano /backup-script/backup-zabbix.sh
#atau
root@webserver: mkdir /tmp/backup-script/backup-zabbix.sh
#atau
root@webserver: mkdir /home/bangandi/backup-script/backup-zabbix.sh

3. Copy bash script dibawah ini ke dalam file bash scriptnya, dan sesuaikan dahulu konfigurasinya seperti filename, srcdir1, srcdir2, desdir.
#!/bin/bash
# Bang Andi
# www.bangandi.web.id
# Backup dir website beserta database

TIME=`date +%b-%d-%y`                    
FILENAME=backup-zabbix-dan-DB-$TIME.tar.gz     # Nama file backup.
SRCDIR1=/var/www/zabbix                        # Direktori website yang ingin di backup.
SRCDIR2=/var/lib/mysql/zabbix                  # Database yang ingin di backup terkait zabbix.
DESDIR=/backup-allweb                          # Direktori sebagai tempat hasil backup.
tar -cpzf $DESDIR/$FILENAME $SRCDIR1 $SRCDIR2

#END

4. Chmod file bash script.
root@webserver : chmod +x /backup-script/backup-zabbix.sh


5. Tes bash script yang sudah dibuat dengan,
root@webserver: cd /backup-script/backup-zabbix.sh
root@webserver:/backup-script# ./backup-zabbix.sh
tar: Removing leading `/' from member names

6. Periksa hasil backup.
root@webserver:/# cd backup-allweb
root@webserver:/backup-allweb# ls
backup-zabbix-dan-DB-Jun-10-15.tar.gz
backup-zabbix-dan-DB-Jun-11-15.tar.gz
backup-zabbix-dan-DB-Jun-12-15.tar.gz

7. Script untuk menghapus [ Remove ] file backup yang lama.
/bin/find /backup-allweb/ -type f -mtime +15 -exec rm -rf {} \;

*Jika ingin 7 hari ganti +15 dengan +7.

8. Jalankan dengan Crontab. Selesai.
0 18 * * 1,2,3,4,5,6 /bin/find /backup-allweb/ -type f -mtime +15 -exec rm -rf {} \;

N.B. Jika menemui kendala, proses backup tidak berjalan atau hasil backup tidak seperti yang diharapkan maka coba periksa kembali bash script & crontab-nya, terkadang kita kurang teliti.

Semoga Membantu!.

No comments:

Post a Comment

N.B.
1. Berkomentarlah dengan sopan.
2. Dilarang membuat spam, terutama yang mengandung SARA/ Pornografi/ Judi dan Iklan.