# Download backups from production server # Check if site name is provided if [ -z "$1" ]; then echo "Usage: $0 " echo "Example: $0 qa.ignis.academy" exit 1 fi SITE_NAME="$1" SERVER="root@188.245.211.114" LIVE_PATH="/var/lib/docker/volumes/frappe-deployment_sites/_data/${SITE_NAME}/private/backups/" # Load environment variables from .env file source .env # Function to download from archived location download_from_archive() { echo "Checking archived location..." ARCHIVED_BASE="/home/frappe/frappe-bench/archived/sites" # Find the latest archived directory matching the site name pattern (sorted by modification time) LATEST_ARCHIVED=$(sshpass -p "$HETZNER_SSH_PASSWORD" ssh "$SERVER" "docker exec frappe-deployment-backend-1 sh -c \"ls -td ${ARCHIVED_BASE}/${SITE_NAME}* 2>/dev/null | head -1\"") if [ -n "$LATEST_ARCHIVED" ]; then ARCHIVED_BACKUP_PATH="${LATEST_ARCHIVED}/private/backups" echo "Found latest archived site: ${LATEST_ARCHIVED}" # Check if backup directory exists in the archived site if sshpass -p "$HETZNER_SSH_PASSWORD" ssh "$SERVER" "docker exec frappe-deployment-backend-1 test -d '${ARCHIVED_BACKUP_PATH}'"; then echo "Downloading from archived location..." # Copy from container to host temp location, then scp to local TEMP_DIR="/tmp/backup_${SITE_NAME}" sshpass -p "$HETZNER_SSH_PASSWORD" ssh "$SERVER" "rm -rf ${TEMP_DIR} && docker cp frappe-deployment-backend-1:${ARCHIVED_BACKUP_PATH} ${TEMP_DIR}" sshpass -p "$HETZNER_SSH_PASSWORD" scp -r "${SERVER}:${TEMP_DIR}" ./development/backups sshpass -p "$HETZNER_SSH_PASSWORD" ssh "$SERVER" "rm -rf ${TEMP_DIR}" echo "Download complete." else echo "Error: Backup directory not found in archived site ${LATEST_ARCHIVED}." exit 1 fi else echo "Error: Site ${SITE_NAME} not found in live or archived locations." exit 1 fi } # Check if live site exists and has backup files echo "Checking if site ${SITE_NAME} is live..." if sshpass -p "$HETZNER_SSH_PASSWORD" ssh "$SERVER" "[ -d '$LIVE_PATH' ]"; then # Check if backup directory has files if sshpass -p "$HETZNER_SSH_PASSWORD" ssh "$SERVER" "[ -n \"\$(ls -A '$LIVE_PATH' 2>/dev/null)\" ]"; then echo "Site is live with backup files. Downloading from live location..." sshpass -p "$HETZNER_SSH_PASSWORD" scp -r "${SERVER}:${LIVE_PATH}" ./development echo "Download complete." else echo "Site is live but has no backup files." download_from_archive fi else echo "Site is not live." download_from_archive fi