feat: add server-side backup scripts and restore guide
This commit is contained in:
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
BACKUP_ROOT="${BACKUP_ROOT:-/var/backups/database-kesiswaan}"
|
||||
TIMESTAMP="${TIMESTAMP:-$(date '+%Y-%m-%d-%H%M%S')}"
|
||||
RETENTION_DAYS="${RETENTION_DAYS:-14}"
|
||||
SOURCE_DIR="${SOURCE_DIR:-$APP_DIR/storage/app/public}"
|
||||
|
||||
abort() {
|
||||
printf '[ERROR] %s\n' "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
log() {
|
||||
printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$1"
|
||||
}
|
||||
|
||||
require_bin() {
|
||||
command -v "$1" >/dev/null 2>&1 || abort "Binary '$1' tidak ditemukan."
|
||||
}
|
||||
|
||||
[[ -d "$SOURCE_DIR" ]] || abort "Folder sumber dokumen tidak ditemukan di $SOURCE_DIR"
|
||||
require_bin tar
|
||||
|
||||
TARGET_DIR="$BACKUP_ROOT/files"
|
||||
mkdir -p "$TARGET_DIR"
|
||||
TARGET_FILE="$TARGET_DIR/storage-public-${TIMESTAMP}.tar.gz"
|
||||
|
||||
log "Memulai backup dokumen dari '$SOURCE_DIR'"
|
||||
tar -czf "$TARGET_FILE" -C "$SOURCE_DIR" .
|
||||
|
||||
find "$TARGET_DIR" -type f -name '*.tar.gz' -mtime +"$RETENTION_DAYS" -delete || true
|
||||
|
||||
log "Backup dokumen selesai: $TARGET_FILE"
|
||||
printf '%s\n' "$TARGET_FILE"
|
||||
Reference in New Issue
Block a user