upskill-event-manager/wordpress-dev/bin/cleanup.sh

166 lines
No EOL
4.3 KiB
Bash
Executable file

#!/bin/bash
# Load environment variables
if [ ! -f ../.env ]; then
echo "Error: .env file not found!"
exit 1
fi
source ../.env
# Colors for output
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
# Function to check if a command was successful
check_status() {
if [ $? -eq 0 ]; then
echo -e "${GREEN}$1${NC}"
return 0
else
echo -e "${RED}$1${NC}"
return 1
fi
}
# Function to show usage
show_usage() {
echo "Usage: $0 [options]"
echo ""
echo "Options:"
echo " -a, --all Clean everything (logs, backups, temp files)"
echo " -l, --logs Clean only log files"
echo " -b, --backups Clean only old backups"
echo " -t, --temp Clean only temporary files"
echo " -d, --days N Clean files older than N days (default: 30)"
echo " -f, --force Skip all confirmations"
echo " -h, --help Show this help message"
echo ""
echo "Examples:"
echo " $0 -a # Clean everything with confirmation"
echo " $0 -l -d 7 # Clean logs older than 7 days"
echo " $0 -b -f # Force clean all old backups"
echo " $0 -t # Clean temporary files"
}
# Default values
CLEAN_LOGS=false
CLEAN_BACKUPS=false
CLEAN_TEMP=false
DAYS=30
FORCE=false
# Parse command line options
while [[ $# -gt 0 ]]; do
case "$1" in
-a|--all)
CLEAN_LOGS=true
CLEAN_BACKUPS=true
CLEAN_TEMP=true
shift
;;
-l|--logs)
CLEAN_LOGS=true
shift
;;
-b|--backups)
CLEAN_BACKUPS=true
shift
;;
-t|--temp)
CLEAN_TEMP=true
shift
;;
-d|--days)
DAYS="$2"
shift 2
;;
-f|--force)
FORCE=true
shift
;;
-h|--help)
show_usage
exit 0
;;
*)
echo "Error: Unknown option '$1'"
show_usage
exit 1
;;
esac
done
# If no options specified, show usage
if [ "$CLEAN_LOGS" = false ] && [ "$CLEAN_BACKUPS" = false ] && [ "$CLEAN_TEMP" = false ]; then
show_usage
exit 1
fi
# Confirm cleanup if not forced
if [ "$FORCE" = false ]; then
echo -e "${YELLOW}Warning: This will clean up your development environment.${NC}"
echo "The following will be cleaned:"
[ "$CLEAN_LOGS" = true ] && echo "- Log files older than $DAYS days"
[ "$CLEAN_BACKUPS" = true ] && echo "- Backup files older than $DAYS days"
[ "$CLEAN_TEMP" = true ] && echo "- Temporary files"
read -p "Continue? [y/N] " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Operation cancelled."
exit 1
fi
fi
echo -e "${BLUE}Starting environment cleanup...${NC}"
# Clean log files
if [ "$CLEAN_LOGS" = true ]; then
echo "Cleaning log files..."
# Clean WordPress logs
docker-compose exec wordpress find /var/www/html/wp-content -name "*.log" -type f -mtime +$DAYS -delete
check_status "WordPress logs cleanup"
# Clean MySQL logs
docker-compose exec db find /var/log/mysql -name "*.log.*" -type f -mtime +$DAYS -delete
check_status "MySQL logs cleanup"
fi
# Clean backup files
if [ "$CLEAN_BACKUPS" = true ]; then
echo "Cleaning old backups..."
# Clean database backups
find ../backups -name "*.sql" -type f -mtime +$DAYS -delete
check_status "Database backups cleanup"
# Clean WordPress backups
find ../backups -name "*.tar.gz" -type f -mtime +$DAYS -delete
check_status "WordPress backups cleanup"
fi
# Clean temporary files
if [ "$CLEAN_TEMP" = true ]; then
echo "Cleaning temporary files..."
# Clean WordPress temp files
docker-compose exec wordpress find /var/www/html/wp-content/uploads/tmp -type f -delete
check_status "WordPress temp files cleanup"
# Clean local temp files
find ../tmp -type f -delete 2>/dev/null || true
check_status "Local temp files cleanup"
fi
echo -e "${GREEN}Environment cleanup completed!${NC}"
# Show disk space saved
echo -e "\n${BLUE}Disk space summary:${NC}"
echo "WordPress volume:"
docker-compose exec wordpress df -h /var/www/html
echo -e "\nMySQL volume:"
docker-compose exec db df -h /var/lib/mysql