#!/bin/bash # shellcheck disable=SC1091 source "${AGENT_PATH}/common.sh" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${SCRIPT_DIR}/_volumes.sh" _check_required_env_vars "CONTAINER_NAME" "BACKUP_FILE" "TEMP_DIR" "UPLOAD_LOCATION" "DB_DATA_LOCATION" "DB_USERNAME" echo "Backing up ${CONTAINER_NAME}..." cd "$SCRIPT_DIR" || _die "Failed to change to script directory" [ -f docker-compose.yml ] || _die "docker-compose.yml not found." # Dump the database before backup echo "Dumping PostgreSQL database..." docker exec "${CONTAINER_NAME}_postgres" pg_dumpall -U "${DB_USERNAME}" > "${TEMP_DIR}/database.sql" \ || _die "Failed to dump database" # Copy the dump to the DB data location for inclusion in backup cp "${TEMP_DIR}/database.sql" "${DB_DATA_LOCATION}/database_backup.sql" # Stop containers for consistent backup docker compose stop # Backup volumes # shellcheck disable=SC2046 backup_items $(get_immich_volumes) || _die "Failed to create backup" # Restart containers docker compose start # Clean up rm -f "${DB_DATA_LOCATION}/database_backup.sql" echo "Backup complete: ${BACKUP_FILE}"