Baik, berikut adalah script untuk membuat otomatis backup database postgre setiap 10 menit yang di zipkan, dan diarsipkan kedalam folder perhari:
Buat Script Backup: Buat sebuah file script di /home/backup/backup_script_postgresql.sh
.
#!/bin/bash
# Informasi koneksi database
DB_HOST="localhost"
DB_PORT="5432"
DB_NAME="infomugi_bedas"
DB_USER="root"
DB_PASSWORD="12345678"
# Direktori untuk menyimpan backup
BACKUP_DIR="/home/backup/bedas"
# Mendapatkan tanggal hari ini
CURRENT_DATE=$(date +"%Y-%m-%d")
CURRENT_TIME=$(date +"%H%M")
# Buat direktori untuk hari ini jika belum ada
TODAY_BACKUP_DIR="$BACKUP_DIR/$CURRENT_DATE"
mkdir -p $TODAY_BACKUP_DIR
# Nama file backup
BACKUP_FILE="$TODAY_BACKUP_DIR/infomugi_bedas_backup_${CURRENT_TIME}.sql"
# Ekspor variabel password agar pg_dump tidak meminta password
export PGPASSWORD=$DB_PASSWORD
# Melakukan backup database
pg_dump -h $DB_HOST -p $DB_PORT -U $DB_USER -F c -b -v -f $BACKUP_FILE $DB_NAME
# Nama file zip
ZIP_FILE="$TODAY_BACKUP_DIR/infomugi_bedas_backup_${CURRENT_TIME}.zip"
# Zip file backup
zip "$ZIP_FILE" "$BACKUP_FILE"
# Hapus file sql setelah dizip
rm $BACKUP_FILE
# Unset variabel password
unset PGPASSWORD
chmod +x /home/backup/backup_script_postgresql.sh
cron
untuk menjalankan script setiap 10 menit. Edit crontab dengan perintah crontab -e
dan tambahkan baris berikut:*/10 * * * * /home/backup/backup_script_postgresql.sh
backup_script_postgresql.sh
akan dijalankan setiap 10 menit, membuat backup database diskominfo_bedas
dalam format zip di direktori /home/backup/bedas/
, dan menyimpannya dalam subdirektori yang sesuai dengan tanggal saat ini, serta nama file zip akan mencakup waktu (jam dan menit) saat backup dilakukan.