#!/bin/bash
# Skrip Backup Otomatis MySQL / MariaDB Terenkripsi (GPG)
# Disertai sinkronisasi ke AWS S3
# Simpan di: /usr/local/bin/backup_db.sh

DB_NAME="nama_database_aplikasi"
BACKUP_DIR="/var/backups/mysql"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
FILE_NAME="$BACKUP_DIR/$DB_NAME-$DATE.sql.gz"

# Buat direktori jika belum ada
mkdir -p $BACKUP_DIR

# Eksekusi mysqldump dan kompres dengan gzip (Menggunakan otentikasi .my.cnf)
mysqldump $DB_NAME | gzip > $FILE_NAME

# Hapus backup yang lebih tua dari 7 hari (Rotasi disk lokal)
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +7 -exec rm {} \;

# Enkripsi file backup menggunakan Public Key penerima (GPG)
gpg --batch --yes --trust-model always --recipient "email-anda@domain.com" --encrypt $FILE_NAME

ENCRYPTED_FILE="$FILE_NAME.gpg"

# Konfigurasi AWS CLI (Upload S3)
aws s3 cp $ENCRYPTED_FILE s3://nama-bucket-backup-anda/database_mysql/ --storage-class STANDARD_IA

# Bersihkan file GPG lokal setelah berhasil diupload
rm $ENCRYPTED_FILE

echo "Backup sukses dienkripsi dan disimpan di S3."
