mirror of
https://github.com/acedanger/shell.git
synced 2025-12-06 05:40:11 -08:00
- Changed inline variable assignments to separate declaration and assignment for clarity. - Updated condition checks and log messages for better readability and consistency. - Added a backup of validate-plex-recovery.sh for safety. - Introduced a new script run-docker-tests.sh for testing setup in Docker containers. - Enhanced ssh-login.sh to improve condition checks and logging functionality.
182 lines
6.2 KiB
Bash
Executable File
182 lines
6.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# env-backup-integration.sh - Integration script for adding .env backup to existing backup system
|
|
# Author: Shell Repository
|
|
# Description: Add .env backup functionality to existing backup scripts
|
|
|
|
# Colors for output
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[0;33m'
|
|
RED='\033[0;31m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
echo -e "${BLUE}=== Environment Files Backup Integration ===${NC}"
|
|
|
|
# Function to add .env backup to a script
|
|
integrate_env_backup() {
|
|
local target_script="$1"
|
|
local integration_point="$2"
|
|
|
|
if [ ! -f "$target_script" ]; then
|
|
echo -e "${YELLOW}Target script not found: $target_script${NC}"
|
|
return 1
|
|
fi
|
|
|
|
# Check if already integrated
|
|
if grep -q "backup-env-files.sh" "$target_script"; then
|
|
echo -e "${GREEN}✓ Already integrated with $target_script${NC}"
|
|
return 0
|
|
fi
|
|
|
|
echo -e "${YELLOW}Integrating with $target_script...${NC}"
|
|
|
|
# Create backup of original script
|
|
cp "$target_script" "$target_script.backup"
|
|
|
|
# Integration code
|
|
local integration_code="
|
|
# === Environment Files Backup Integration ===
|
|
echo -e \"\${YELLOW}Backing up environment files...\${NC}\"
|
|
if [ -f \"\$SCRIPT_DIR/backup-env-files.sh\" ]; then
|
|
if \"\$SCRIPT_DIR/backup-env-files.sh\"; then
|
|
echo -e \"\${GREEN}✓ Environment files backed up successfully\${NC}\"
|
|
else
|
|
echo -e \"\${YELLOW}Warning: Environment files backup had issues\${NC}\"
|
|
fi
|
|
else
|
|
echo -e \"\${YELLOW}Warning: backup-env-files.sh not found\${NC}\"
|
|
fi
|
|
|
|
# Validate the backup
|
|
if [ -f \"\$SCRIPT_DIR/validate-env-backups.sh\" ]; then
|
|
if \"\$SCRIPT_DIR/validate-env-backups.sh\" --summary-only; then
|
|
echo -e \"\${GREEN}✓ Environment backup validation passed\${NC}\"
|
|
else
|
|
echo -e \"\${YELLOW}Warning: Environment backup validation failed\${NC}\"
|
|
fi
|
|
fi
|
|
echo \"\"
|
|
# === End Environment Files Backup Integration ===
|
|
"
|
|
|
|
# Add integration based on integration point
|
|
case "$integration_point" in
|
|
"after_docker")
|
|
# Add after Docker backup section
|
|
if grep -q "docker" "$target_script" || grep -q "backup.*docker" "$target_script"; then
|
|
# Find a good insertion point after docker backup
|
|
local line_num=$(grep -n -i "docker.*backup\|backup.*docker" "$target_script" | tail -1 | cut -d: -f1)
|
|
if [ -n "$line_num" ]; then
|
|
sed -i "${line_num}a\\${integration_code}" "$target_script"
|
|
echo -e "${GREEN}✓ Integrated after Docker backup section${NC}"
|
|
else
|
|
echo -e "${YELLOW}Could not find Docker backup section, adding at end${NC}"
|
|
echo "$integration_code" >> "$target_script"
|
|
fi
|
|
else
|
|
echo -e "${YELLOW}No Docker backup section found, adding at end${NC}"
|
|
echo "$integration_code" >> "$target_script"
|
|
fi
|
|
;;
|
|
"before_end")
|
|
# Add before the end of the script
|
|
local last_line=$(wc -l < "$target_script")
|
|
sed -i "${last_line}i\\${integration_code}" "$target_script"
|
|
echo -e "${GREEN}✓ Integrated before end of script${NC}"
|
|
;;
|
|
"manual")
|
|
echo -e "${BLUE}Manual integration code:${NC}"
|
|
echo "$integration_code"
|
|
echo -e "${YELLOW}Please add this code manually to your script at the appropriate location${NC}"
|
|
;;
|
|
*)
|
|
echo -e "${YELLOW}Unknown integration point, adding at end${NC}"
|
|
echo "$integration_code" >> "$target_script"
|
|
;;
|
|
esac
|
|
|
|
echo -e "${GREEN}Integration completed. Backup saved as $target_script.backup${NC}"
|
|
}
|
|
|
|
# Find and integrate with existing backup scripts
|
|
echo -e "${YELLOW}Scanning for backup scripts to integrate with...${NC}"
|
|
|
|
# Common backup script patterns
|
|
declare -a backup_scripts=(
|
|
"$SCRIPT_DIR/backup-docker.sh"
|
|
"$SCRIPT_DIR/backup-media.sh"
|
|
"$SCRIPT_DIR/update.sh"
|
|
"$SCRIPT_DIR/backup.sh"
|
|
"$SCRIPT_DIR/daily-backup.sh"
|
|
)
|
|
|
|
found_scripts=()
|
|
|
|
for script in "${backup_scripts[@]}"; do
|
|
if [ -f "$script" ]; then
|
|
found_scripts+=("$script")
|
|
echo -e "${GREEN}Found: $(basename "$script")${NC}"
|
|
fi
|
|
done
|
|
|
|
if [ ${#found_scripts[@]} -eq 0 ]; then
|
|
echo -e "${YELLOW}No backup scripts found to integrate with${NC}"
|
|
echo -e "${BLUE}You can manually add the .env backup to your backup routine:${NC}"
|
|
echo ""
|
|
echo "# Add to your backup script:"
|
|
echo "$SCRIPT_DIR/backup-env-files.sh"
|
|
echo "$SCRIPT_DIR/validate-env-backups.sh --summary-only"
|
|
echo ""
|
|
else
|
|
echo -e "${BLUE}Select scripts to integrate with (or 'all' for all, 'none' to skip):${NC}"
|
|
for i in "${!found_scripts[@]}"; do
|
|
echo "$((i+1)). $(basename "${found_scripts[$i]}")"
|
|
done
|
|
echo ""
|
|
|
|
read -p "Enter your choice: " choice
|
|
|
|
case "$choice" in
|
|
"all")
|
|
for script in "${found_scripts[@]}"; do
|
|
integrate_env_backup "$script" "after_docker"
|
|
done
|
|
;;
|
|
"none")
|
|
echo -e "${YELLOW}Skipping integration${NC}"
|
|
;;
|
|
[0-9]*)
|
|
if [ "$choice" -ge 1 ] && [ "$choice" -le ${#found_scripts[@]} ]; then
|
|
script_index=$((choice-1))
|
|
integrate_env_backup "${found_scripts[$script_index]}" "after_docker"
|
|
else
|
|
echo -e "${RED}Invalid choice${NC}"
|
|
fi
|
|
;;
|
|
*)
|
|
echo -e "${RED}Invalid choice${NC}"
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# Create a simple cron entry suggestion
|
|
echo -e "${BLUE}=== Automation Suggestions ===${NC}"
|
|
echo "Add to crontab for automated backups:"
|
|
echo ""
|
|
echo "# Daily .env backup at 2 AM"
|
|
echo "0 2 * * * $SCRIPT_DIR/backup-env-files.sh >/dev/null 2>&1"
|
|
echo ""
|
|
echo "# Weekly validation on Sundays at 3 AM"
|
|
echo "0 3 * * 0 $SCRIPT_DIR/validate-env-backups.sh --summary-only"
|
|
echo ""
|
|
|
|
echo -e "${GREEN}Integration setup completed!${NC}"
|
|
echo -e "${BLUE}Next steps:${NC}"
|
|
echo "1. Run: $SCRIPT_DIR/backup-env-files.sh --init"
|
|
echo "2. Create private repository in Gitea"
|
|
echo "3. Run first backup: $SCRIPT_DIR/backup-env-files.sh"
|
|
echo "4. Test restoration: $SCRIPT_DIR/backup-env-files.sh --restore"
|