Merge branch 'main' of https://git.hhf.technology/hhf/script-management-cloudpanel
This commit is contained in:
commit
b36658a0ee
2 changed files with 0 additions and 457 deletions
174
Testing/test.sh
174
Testing/test.sh
|
@ -1,174 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
#-----------------------------------#
|
||||
# VARIABLES #
|
||||
#-----------------------------------#
|
||||
|
||||
this_script_url="https://git.hhf.technology/hhf/script-management-cloudpanel/raw/branch/main/Testing/test.sh"
|
||||
this_script_name="Test Script"
|
||||
formatter_url="https://git.hhf.technology/hhf/TaskFormatter/raw/branch/main/bash_task_formatter/task_formatter.sh"
|
||||
scriptname=$0
|
||||
|
||||
# Initialize success flag
|
||||
success=0
|
||||
|
||||
# Determine the user (use the first argument if provided, otherwise fallback)
|
||||
USER_TO_RUN_AS="${1:-$SUDO_USER}"
|
||||
USER_HOME=$(eval echo ~$USER_TO_RUN_AS)
|
||||
|
||||
#-----------------------------------#
|
||||
# FORMATTER #
|
||||
#-----------------------------------#
|
||||
|
||||
# Download and source the formatter with error handling
|
||||
download_formatter() {
|
||||
if [ ! -f "task_formatter.sh" ]; then
|
||||
if ! wget "$formatter_url" --no-check-certificate -O task_formatter.sh > /dev/null 2>&1; then
|
||||
echo "Error: Failed to download task_formatter.sh"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -f "task_formatter.sh" ]; then
|
||||
echo "Error: task_formatter.sh not found after download attempt"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Make the formatter executable
|
||||
chmod +x task_formatter.sh
|
||||
|
||||
# Source the formatter with error checking
|
||||
source ./task_formatter.sh || { echo "Error: Failed to source task_formatter.sh"; exit 1; }
|
||||
|
||||
# Check if print_header is available after sourcing
|
||||
if ! declare -f print_header > /dev/null; then
|
||||
echo "Error: print_header function not found after sourcing."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Call the download_formatter function
|
||||
download_formatter
|
||||
|
||||
#-----------------------------------#
|
||||
# FUNCTIONS #
|
||||
#-----------------------------------#
|
||||
|
||||
# Function to update packages
|
||||
update_upgrade_packages() {
|
||||
sudo apt-get update > /dev/null 2>&1
|
||||
echo -e "Packages Updated $CHECK_MARK"
|
||||
sudo apt-get upgrade -y > /dev/null 2>&1
|
||||
echo -e "Packaged Upgraded $CHECK_MARK"
|
||||
sudo apt-get autoremove -y > /dev/null 2>&1
|
||||
echo -e "Packages Cleaned $CHECK_MARK"
|
||||
}
|
||||
|
||||
example_function_1() {
|
||||
echo -e "This is example function 1. $CHECK_MARK"
|
||||
sleep 2
|
||||
return 0
|
||||
}
|
||||
|
||||
# Example function 2
|
||||
example_function_2() {
|
||||
echo "This is example function 2."
|
||||
sleep 2
|
||||
echo -e "Done $CHECK_MARK"
|
||||
sleep 2
|
||||
return 0
|
||||
}
|
||||
|
||||
# Example function 3 with an error
|
||||
example_function_3() {
|
||||
echo -e "This is example function 3 and it will fail. $CROSS_MARK"
|
||||
sleep 3
|
||||
return 1
|
||||
}
|
||||
|
||||
ask_reconfigure() {
|
||||
read -p "Question? (y/n): " choice
|
||||
case "$choice" in
|
||||
y|Y ) return 0;;
|
||||
n|N ) return 1;;
|
||||
* ) echo "Invalid choice."; ask_reconfigure;;
|
||||
esac
|
||||
}
|
||||
|
||||
# remove artifacts
|
||||
remove_script() {
|
||||
if [ -f "$0" ]; then
|
||||
echo "Deleted master script..."
|
||||
rm -- "$0"
|
||||
fi
|
||||
if [ -f "task_formatter.sh" ]; then
|
||||
rm task_formatter.sh
|
||||
fi
|
||||
echo -e "Cleaned up $CHECK_MARK"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Remove created files on Failure
|
||||
cleanup_files() {
|
||||
echo -e "Cleaned up $CHECK_MARK"
|
||||
return 0
|
||||
}
|
||||
|
||||
#-----------------------------------#
|
||||
# MAIN LOGIC #
|
||||
#-----------------------------------#
|
||||
|
||||
# Check if print_header function exists
|
||||
if ! command -v print_header >/dev/null 2>&1; then
|
||||
echo "Error: print_header function not found. Formatter may not be properly sourced."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Print header
|
||||
print_header "$this_script_name" "$this_script_url"
|
||||
|
||||
echo -e "Running as User: $USER_TO_RUN_AS\nUser Home: $USER_HOME\n"
|
||||
|
||||
# Run the functions with formatted output
|
||||
if ! format_output example_function_1 "Example Function 1"; then
|
||||
cleanup_files
|
||||
success=1
|
||||
fi
|
||||
|
||||
if ! format_output example_function_2 "Example Function 2"; then
|
||||
cleanup_files
|
||||
success=1
|
||||
fi
|
||||
|
||||
if ! format_output example_function_3 "Example Function 3"; then
|
||||
cleanup_files
|
||||
success=1
|
||||
fi
|
||||
|
||||
if ! format_output_with_input ask_reconfigure "Test Reconfiguring"; then
|
||||
cleanup_files
|
||||
success=1
|
||||
fi
|
||||
|
||||
format_output remove_script "Cleaning up"
|
||||
|
||||
# Check if final_message function exists
|
||||
if ! command -v final_message >/dev/null 2>&1; then
|
||||
echo "Error: final_message function not found. Formatter may not be properly sourced."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Print final message
|
||||
final_message() {
|
||||
local script_name=$1
|
||||
local success=$2
|
||||
if [[ $success -eq 0 ]]; then
|
||||
log "${CHECK_MARK} $script_name completed successfully."
|
||||
else
|
||||
log "${CROSS_MARK} $script_name encountered errors."
|
||||
fi
|
||||
}
|
||||
|
||||
# Exit with appropriate status
|
||||
exit $success
|
|
@ -1,283 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
#-----------------------------------#
|
||||
# VARIABLES #
|
||||
#-----------------------------------#
|
||||
|
||||
this_script_url="https://git.hhf.technology/hhf/script-management-cloudpanel/raw/branch/main/backup/wp_backup.sh"
|
||||
this_script_name="WordPress Backup Script"
|
||||
formatter_url="https://git.hhf.technology/hhf/TaskFormatter/raw/branch/main/bash_task_formatter/task_formatter.sh"
|
||||
scriptname=$0
|
||||
|
||||
# Initialize success flag
|
||||
success=0
|
||||
|
||||
# Determine the user (use the first argument if provided, otherwise fallback)
|
||||
USER_TO_RUN_AS="${1:-$SUDO_USER}"
|
||||
USER_HOME=$(eval echo ~$USER_TO_RUN_AS)
|
||||
|
||||
#-----------------------------------#
|
||||
# FORMATTER #
|
||||
#-----------------------------------#
|
||||
|
||||
# Download and source the formatter with error handling
|
||||
download_formatter() {
|
||||
if [ ! -f "task_formatter.sh" ]; then
|
||||
if ! wget "$formatter_url" --no-check-certificate -O task_formatter.sh > /dev/null 2>&1; then
|
||||
echo "Error: Failed to download task_formatter.sh"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -f "task_formatter.sh" ]; then
|
||||
echo "Error: task_formatter.sh not found after download attempt"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
chmod +x task_formatter.sh
|
||||
source ./task_formatter.sh || { echo "Error: Failed to source task_formatter.sh"; exit 1; }
|
||||
|
||||
if ! declare -f print_header > /dev/null; then
|
||||
echo "Error: print_header function not found after sourcing."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Call the download_formatter function
|
||||
download_formatter
|
||||
|
||||
#-----------------------------------#
|
||||
# FUNCTIONS #
|
||||
#-----------------------------------#
|
||||
|
||||
# Function to collect WordPress and backup variables
|
||||
collect_variables() {
|
||||
# Clear any existing values
|
||||
unset DATABASE WP_DIR SCRIPTS_DIR S3_BUCKET_NAME S3_FOLDER_NAME
|
||||
|
||||
echo "Please provide the following information:"
|
||||
echo "----------------------------------------"
|
||||
|
||||
# Database name
|
||||
echo -n "Enter database name: "
|
||||
read -r DATABASE
|
||||
echo "Received database name: $DATABASE"
|
||||
|
||||
# WordPress directory
|
||||
echo -n "Enter WordPress installation path (e.g., /home/username/htdocs/domain.com): "
|
||||
read -r WP_DIR
|
||||
echo "Received WordPress path: $WP_DIR"
|
||||
|
||||
# Derive WordPress content directories
|
||||
UPLOADS_DIR="${WP_DIR}/wp-content/uploads"
|
||||
THEMES_DIR="${WP_DIR}/wp-content/themes"
|
||||
PLUGINS_DIR="${WP_DIR}/wp-content/plugins"
|
||||
WPCONTENT_DIR="${WP_DIR}/wp-content"
|
||||
|
||||
echo -e "\nBackup Locations:"
|
||||
echo -n "Enter scripts directory path (e.g., /home/username/scripts): "
|
||||
read -r SCRIPTS_DIR
|
||||
echo "Received scripts path: $SCRIPTS_DIR"
|
||||
|
||||
# Backup directory
|
||||
BACKUP_DIR="${SCRIPTS_DIR}/backups"
|
||||
echo "Backup directory will be: ${BACKUP_DIR}"
|
||||
|
||||
echo -e "\nS3 Configuration:"
|
||||
# S3cmd path
|
||||
S3_CMD="/usr/local/bin/s3cmd"
|
||||
if [ ! -f "$S3_CMD" ]; then
|
||||
echo -n "s3cmd not found at default location. Enter s3cmd path: "
|
||||
read -r S3_CMD
|
||||
echo "Received s3cmd path: $S3_CMD"
|
||||
fi
|
||||
|
||||
# S3 bucket information
|
||||
echo -n "Enter S3 bucket name (e.g., my-bucket): "
|
||||
read -r S3_BUCKET_NAME
|
||||
echo "Received bucket name: $S3_BUCKET_NAME"
|
||||
|
||||
echo -n "Enter S3 folder name (e.g., backups): "
|
||||
read -r S3_FOLDER_NAME
|
||||
echo "Received folder name: $S3_FOLDER_NAME"
|
||||
|
||||
S3_BUCKET="s3://${S3_BUCKET_NAME}/${S3_FOLDER_NAME}/"
|
||||
|
||||
# Current date for backup naming
|
||||
CURRENT_DATE=$(date +"%Y-%m-%d")
|
||||
|
||||
# Display collected information
|
||||
echo -e "\nSummary of collected information:"
|
||||
echo "----------------------------------------"
|
||||
echo "Database Name: $DATABASE"
|
||||
echo "WordPress Directory: $WP_DIR"
|
||||
echo "Scripts Directory: $SCRIPTS_DIR"
|
||||
echo "Backup Directory: $BACKUP_DIR"
|
||||
echo "S3 Bucket Path: $S3_BUCKET"
|
||||
|
||||
# Confirm information
|
||||
echo -n "Is this information correct? (y/n): "
|
||||
read -r confirm
|
||||
if [[ $confirm != [Yy]* ]]; then
|
||||
echo "Please run the script again with correct information."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Export variables so they're available to other functions
|
||||
export DATABASE WP_DIR UPLOADS_DIR THEMES_DIR PLUGINS_DIR WPCONTENT_DIR
|
||||
export BACKUP_DIR SCRIPTS_DIR CURRENT_DATE S3_CMD S3_BUCKET
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Current date for backup naming
|
||||
CURRENT_DATE=$(date +"%Y-%m-%d")
|
||||
|
||||
# Display collected information
|
||||
echo -e "\nSummary of collected information:"
|
||||
echo "----------------------------------------"
|
||||
echo "Database Name: $DATABASE"
|
||||
echo "WordPress Directory: $WP_DIR"
|
||||
echo "Scripts Directory: $SCRIPTS_DIR"
|
||||
echo "Backup Directory: $BACKUP_DIR"
|
||||
echo "S3 Bucket Path: $S3_BUCKET"
|
||||
|
||||
# Confirm information
|
||||
read -p "Is this information correct? (y/n): " confirm
|
||||
if [[ $confirm != [Yy]* ]]; then
|
||||
echo "Please run the script again with correct information."
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to check WordPress installation
|
||||
check_wordpress() {
|
||||
if [ ! -d "${WP_DIR}" ]; then
|
||||
echo "Directory ${WP_DIR} does not exist"
|
||||
return 1
|
||||
fi
|
||||
if [ ! -f "${WP_DIR}/wp-config.php" ]; then
|
||||
echo "No wp-config.php in ${WP_DIR}"
|
||||
return 1
|
||||
fi
|
||||
echo "Found wp-config.php in ${WP_DIR}"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to prepare backup directory
|
||||
prepare_backup_dir() {
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
rm -rf "${BACKUP_DIR:?}/*"
|
||||
echo "Created and cleaned ${BACKUP_DIR}"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to backup database
|
||||
backup_database() {
|
||||
echo "Creating Database dump..."
|
||||
if ! clpctl db:export --databaseName="${DATABASE}" --file="$BACKUP_DIR/${DATABASE}.sql.gz"; then
|
||||
echo "Database backup failed"
|
||||
return 1
|
||||
fi
|
||||
echo "Database dump created at ${BACKUP_DIR}/${DATABASE}.sql.gz"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to backup WordPress files
|
||||
backup_wordpress_files() {
|
||||
echo "Creating WordPress file backups..."
|
||||
|
||||
# Backup WordPress core files
|
||||
tar -cjf "${BACKUP_DIR}/wp_files.tar.bz2" --exclude='wp-content' "${WP_DIR}"
|
||||
|
||||
# Backup wp-content excluding specific directories
|
||||
tar -cjf "${BACKUP_DIR}/others.tar.bz2" \
|
||||
--exclude='themes' --exclude='plugins' --exclude='uploads' \
|
||||
--exclude='cache' --exclude='updraft' --exclude='backups-dup-pro' \
|
||||
--exclude='backups-dup' --exclude='ai1wm-backups' "${WPCONTENT_DIR}"
|
||||
|
||||
# Backup specific directories
|
||||
tar -cjf "${BACKUP_DIR}/uploads.tar.bz2" "${UPLOADS_DIR}"
|
||||
tar -cjf "${BACKUP_DIR}/themes.tar.bz2" "${THEMES_DIR}"
|
||||
tar -cjf "${BACKUP_DIR}/plugins.tar.bz2" "${PLUGINS_DIR}"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to upload to S3
|
||||
upload_to_s3() {
|
||||
mv "${BACKUP_DIR}" "${SCRIPTS_DIR}/${CURRENT_DATE}"
|
||||
echo "Uploading backup to S3..."
|
||||
if ! $S3_CMD sync "${SCRIPTS_DIR}/${CURRENT_DATE}" "${S3_BUCKET}"; then
|
||||
echo "S3 upload failed"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to clean up
|
||||
cleanup() {
|
||||
echo "Removing local files..."
|
||||
rm -rf "${SCRIPTS_DIR:?}/${CURRENT_DATE}"
|
||||
return 0
|
||||
}
|
||||
|
||||
#-----------------------------------#
|
||||
# MAIN LOGIC #
|
||||
#-----------------------------------#
|
||||
|
||||
# Check if print_header function exists
|
||||
if ! command -v print_header >/dev/null 2>&1; then
|
||||
echo "Error: print_header function not found. Formatter may not be properly sourced."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Print header
|
||||
print_header "$this_script_name" "$this_script_url"
|
||||
|
||||
echo -e "Running as User: $USER_TO_RUN_AS\nUser Home: $USER_HOME\n"
|
||||
|
||||
# Collect variables from user
|
||||
if ! format_output collect_variables "Collecting Configuration Information"; then
|
||||
success=1
|
||||
exit $success
|
||||
fi
|
||||
|
||||
# Run the backup functions with formatted output
|
||||
if ! format_output check_wordpress "Checking WordPress Installation"; then
|
||||
success=1
|
||||
exit $success
|
||||
fi
|
||||
|
||||
if ! format_output prepare_backup_dir "Preparing Backup Directory"; then
|
||||
success=1
|
||||
exit $success
|
||||
fi
|
||||
|
||||
if ! format_output backup_database "Backing up Database"; then
|
||||
success=1
|
||||
exit $success
|
||||
fi
|
||||
|
||||
if ! format_output backup_wordpress_files "Backing up WordPress Files"; then
|
||||
success=1
|
||||
exit $success
|
||||
fi
|
||||
|
||||
if ! format_output upload_to_s3 "Uploading to S3"; then
|
||||
success=1
|
||||
exit $success
|
||||
fi
|
||||
|
||||
if ! format_output cleanup "Cleaning up temporary files"; then
|
||||
success=1
|
||||
exit $success
|
||||
fi
|
||||
|
||||
# Print final message
|
||||
final_message "$this_script_name" "$success"
|
||||
|
||||
# Exit with appropriate status
|
||||
exit $success
|
Loading…
Reference in a new issue