Tutorial Backup database dan source code pada VPS anda menggunakan shell script

Backup adalah hal yang sangat penting jika anda merasa file/data anda berharga. Terdapat berbagai mancam cara metod untuk melakukan backup.

Akan tetapi bagaimana melakukan backup pada database posgresql?

Untuk hal ini, silahkan buat shell script dengan nama backup_script.sh (ketik vim backup_script.sh)

#!/bin/bash
# Location to place backups.
backup_dir="/home/globalway/Dropbox/"
#String to append to the name of the backup files
backup_date=`date +%d-%m-%Y`
#Numbers of days you want to keep copie of your databases
number_of_days=30
databases=`PGPASSWORD="xxxxx" psql -l -t -U 'xxxx' | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d'`
for i in $databases; do
if [ "$i" == "prpo_production" ]; then
echo Dumping $i to $backup_dir$i\_$backup_date
PGPASSWORD="xxxxx" pg_dump -Fc -U 'xxxx' $i > $backup_dir$i\_$backup_date
fi
done
find $backup_dir -type f -prune -mtime +$number_of_days -exec rm -f {} \;

Pastikan anda menyesuaikan dan mengganti tulisan yang tebal. script diatas akan melakukan / menyimpan backup 30 hari terakhir saja.

backup_dir : tempat dimana file database akan disimpan
PGPASSWORD : password user database
-U : username database yang digunakan
number_of_days : di isi bebas, default adalah 30 hari yang artinya script akan melakukan backup 30 hari terakhir saja, selebihnya akan terhapus otomatis.

setelah backup_script.sh tersimpan pada /root/backup_script.sh
hal selanjutnya adalah membuat cronjob agar file backup selalu di running setiap hari.
ketik crontab -e dan masukan syntax dibawah ini

0 18 * * * /root/backup_script.sh >> /root/cron.log 2>&1

maka backup_script.sh akan running setiap hari pada pukul 6 malam. untuk log nya bisa dilihat di /root/cron.log

Bagaimana jika ingin melakukan backup pada database mysql?

silahkan buat shell script dengan nama backup_script.sh (ketik vim backup_script.sh)

#!/bin/sh
now="$(date +'%d_%m_%Y_%H_%M_%S')"
filename="db_backup_$now".gz
backupfolder="/root/database"
fullpathbackupfile="$backupfolder/$filename"
logfile="$backupfolder/"backup_log_"$(date +'%Y_%m')".txt
echo "mysqldump started at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
mysqldump --user=root --password=xxxx --default-character-set=utf8 nama_database | gzip > "$fullpathbackupfile"
echo "mysqldump finished at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
chown root "$fullpathbackupfile"
chown root "$logfile"
echo "file permission changed" >> "$logfile"
find "$backupfolder" -name db_backup_* -mtime +8 -exec rm {} \;
echo "old files deleted" >> "$logfile"
echo "operation finished at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
echo "*****************" >> "$logfile"
exit 0

tulisan tebal silahkan disesuaikan dengan kondisi vps masing-masing termasuk user dan passwordnya. Script diatas akan menyimpan database yg terbakup selama kurang lbh 10 hari kebelakang, selebihnya akan terhapus otomatis.

letakan backup_script.sh pada /root/backup_script.sh
buatlah cronjob untuk running script diatas setiap hari dengan cara ketik crontab -e dan masukan syntax dibawah ini:

0 0 * * * /root/backup_script.sh >> /root/backup_database.log 2>&1

maka script tersebut akan di running setiap hari pukul 00:00, untuk log dapat dilihat di /root/backup_database.log

Sekian tutorial backup database mysql + posgresql beserta dengan upload script/file ke cloud storage.

Salam,

Rian Dknet

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *