Cara Backup Database dan Website Otomatis Dengan Cronjob dan Rclone Debian Server
Bagi sysadmin, backup merupakan keharusan, namun jika dilakukan manual akan memakan waktu dan sangat merepotkan jika sudah banyak yang harus dibackup, jika kita menggunakan server linux, maka dapat memanfaatkan cron job utility bawaan pada linux. menggunakan cron job dengan crontab file sudah pernah saya tulis pada artikel Memahami Crontab Parameter untuk Cronjob Penjadwalan Script atau Bash pada Linux Server
Cron Job Untuk Backup
Cronjob bisa dimanfaatkan untuk berbagai kebutuhan, namun pada postingan ini saya akan membahas cronjob untuk backup file-file database dan website, untuk konfigurasi akan mudah jika kita hosting pada server yang menyediakan cpanel/web panel lainnya, konfigurasi schedule untuk cronjob bisa menggunakan gui. misal mau eksekusi task setiap menit/jam/hari/minggu/bulan dst. berdasarkan jam tertentu saja, atau setiap beberapa jam saja. sangat fleksibel. karena debian saya tidak menggunakan panel, jadi saya demokan cara manual saja.
Backup Database
Backup database dengan perintah mysqldump, karena nanti menggunakan crontab, jadi jangan lupa install mysql-client dulu pada masing-masing distro linuxnya ya. jalankan perintah berikut :
#buat crontab sebagai root
sudo crontab -e
#tambahkan script berikut untuk export database dengan mysqldump
#dan compress dengan gzip dengan prefix tanggal backup
#backup setiap menit ke 0 jam 2 pagi setiap hari
#ganti
#{user-database} dengan username untuk mysql
#{password} dengan password untuk mysql
#{host} dengan host untuk mysql, misal localhost/192.168.0.2
#{nama-database} dengan nama database mysql
0 2 * * * /usr/bin/mysqldump -u {user-database} -p{password} -h {host} {nama-database} | gzip > /var/backup/database/{nama-database}-`date +%m%d%y%s`.sql.gz
perintah yang kita buat akan membackup setiap jam 2 pagi ke direktori /var/backup/database/{nama-database}-{datetime}.sql.gz
Backup File/Script Website
Backup semua file website pada direktori utama website kita, kita akan menggunakan utility tar untuk membuat archive kompresi dengan extensi tar.gz. jalankan perintah berikut :
#edit crontab file sebagai root
sudo crontab -e
#tambahkan script berikut untuk membuat archive data website
#buat archive setiap menit 0 jam 3 pagi setiap hari
#ganti {nama-direktori-website} dengan nama folder website anda
0 3 * * * /bin/tar -C / -czvf /var/backup/website/{nama-direktori-website}-`date +%m%d%y%s`.tar.gz var/www/{nama-direktori-website}
perintah tar -C adalah untuk archive folder, dan -czvf adalah :
-c: membuat arship.
-z: Compress dengan format gzip.
-v: tampilkan progress di terminal ketika membuat archive, atau “verbose” mode.
-f: mengizinkan membuat nama archive secara spesifik.
perintah selanjutnya adalah membuat file dilokasi /var/backup/website dengan nama dan prefix datetime, dan perintah terakhirnya adalah direktori yang akan di archive.
Memindahkan File Backup ke Layanan Cloud
Selanjutnya agar file backup tidak berada pada server, kita bisa memindahkan filenya ke layanan cloud dengan rclone, untuk installasi dan membuat rclone config bisa dibaca pada artikel Cara Install dan Konfigurasi RClone Untuk Backup Data ke Berbagai Layanan Cloud. dan untuk tips dan cara penggunaan bisa dibaca pada artikel Tips dan Cara Menggunakan RClone untuk Backup Data ke Berbagai Layanan Cloud. anda bisa membuat rclone terhubung dengan layanan cloud yang anda inginkan, seperti google drive, dropbox, backblaze, onedrive dan lain sebagainya. sekarang kita akan memindahkan file backup database dan website yang digenerate dengan cronjob menggunakan rclone yang juga di eksekusi dengan cronjob.
#edit crontab sebagai root
sudo crontab -e
#tambahkan baris untuk backup ke layanan cloud dengan rclone
#jalankan rclone menit 0 jam 5 pagi setiap hari
#backup ke rclone config Google Drive
0 5 * * * pgrep -c rclone || /usr/bin/setsid /usr/bin/rclone move /var/backup/database NajaGoogleDrive:Database/ --log-file /home/users/rclone.log &>/dev/null
#jalankan rclone menit 0 jam 6 pagi setiap hari
#backup ke rclone config Google Drive
0 6 * * * pgrep -c rclone || /usr/bin/setsid /usr/bin/rclone move /var/backup/website NajaGoogleDrive:Website/ --log-file /home/users/rclone.log &>/dev/null
Setiap eksekusi rclone untuk memindahkan file, simpan log nya ke home user dengan nama rclone.log, hasil dari otput /dev/null dimasukkan ke rclone.log. untuk mengcopy atau sync perintahnya hampir mirip, silahkan dicoba-coba saja sesuai dengan kebutuhan.