menu

Engine UBUNTU - Crontab backup database


Crontab merupakan sebuah sistem otomatis pada ubuntu yang dapat kita manfaatkan untuk menjalankan script terminal secara otomatis dan berkala.

Pada perusahaan-perusahaan start-up, data-data perusahaan seperti data user, data client dan lain-lain selalu dibackup untuk diolah dan untuk menjaga jika suatu ketika developer melakukan kesalahan.

Sehingga sistem crontab pada ubuntu ini sangatlah berguna untuk permasalahan tersebut.

Sistem crontab dapat mengatur suatu engine untuk dijalankan secara berkala misalkan setiap hari jam 6 pagi database perusahaan akan dibackup secara otomatis sehingga developer tidak perlu lagi membackup database secara manual.

Tutorial kali ini akan mengajarkan cara membuat engine crontab tersebut.
Sangat disarankan telah mengikuti tutorial pada website ini tentang PHP sampai pada CRUD delete non framework karena kita akan membackup database dari project tersebut.

Pertama, buat folder pada path var/www/html bernama crontab seperti ini


Kemudian buat file bernama backup.sh pada folder crontab tersebut, dengan cara sudo vim backup.sh kemudian isi kan code berikut pada file tersebut,
now="$(date +'%d_%m_%Y_%H_%M_%S')"
filename="db_backup_$now".gz
backupfolder="/var/www/html/crontab"
fullpathbackupfile="$backupfolder/$filename"
logfile="$backupfolder/"backup_log_"$(date +'%Y_%m')".txt
echo "backup database dimulai pada $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
mysqldump --user=root --password=(*diisi password mysql anda) --default-character-set=utf8 webcoboy | gzip > "$fullpathbackupfile"
echo "backup database selesai pada $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
chown myuser "$fullpathbackupfile"
chown myuser "$logfile"
echo "proses selesai pada $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
echo "*****************" >> "$logfile"
exit 0

Setelah itu pastikan bahwa file backup.sh yang baru dibuat tadi dapat dieksekusi dengan cara "sudo chmod 755 backup.sh" untuk lebih jelasnya lihat disini.

Selanjutnya ketikan pada terminal crontab -e untuk mengedit list crontab
dan masukan code berikut seperti ini.
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
* * * * * /var/www/html/crontab/backup.sh

See crontab akan menjalankan file backup.sh setiap satu menit untuk membackup database project webcoboy. untuk mengeceknya silahkan buka folder crontab pada path /var/www/html/crontab makan anda akan melihat file backup dan file txt.

Untuk menghentikan hapus atau comment saja code berikut pada crontab, dengan mengetikan crontab -e seperti ini.
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
#* * * * * /var/www/html/crontab/backup.sh

Untuk membaca file .gz hasil backup dengan cara:

$ sudo zcat filename.gz 

Jika kurang mengerti dengan sintax ubuntu silahkan buka disini.
Untuk penjelasan tentang Crontab sendiri bisa lihat disini.

===DONE!===