#!/bin/sh
# Backup harian SIM-PMS di cPanel (dipanggil Cron Job). Menyimpan 14 cadangan terakhir di ~/backup-simpms
#   Isi: dump database MySQL + folder file privat (foto & dokumen terenkripsi).
# PENTING: unduh berkala ke komputer/flashdisk; simpan .env (kunci) TERPISAH dari backup ini.
set -eu
APP="$HOME/sim-pms-api"; DEST="$HOME/backup-simpms"; STAMP="$(date +%Y%m%d-%H%M)"
mkdir -p "$DEST"; chmod 700 "$DEST"
get() { grep -E "^$1=" "$APP/.env" | head -1 | cut -d= -f2- | sed 's/^"//;s/"$//'; }
CNF="$(mktemp)"; trap 'rm -f "$CNF"' EXIT; chmod 600 "$CNF"
printf '[client]\nuser=%s\npassword="%s"\nhost=%s\n' "$(get DB_USERNAME)" "$(get DB_PASSWORD)" "$(get DB_HOST)" > "$CNF"
mysqldump --defaults-extra-file="$CNF" --single-transaction --no-tablespaces --routines "$(get DB_DATABASE)" | gzip > "$DEST/db-$STAMP.sql.gz"
tar -czf "$DEST/files-$STAMP.tar.gz" -C "$APP/storage/app" private
chmod 600 "$DEST"/*
ls -1t "$DEST"/db-*.sql.gz | tail -n +15 | xargs -r rm -f
ls -1t "$DEST"/files-*.tar.gz | tail -n +15 | xargs -r rm -f
