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 : |
#!/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 "========================"