Add 26 files
All checks were successful
Test and Publish Templates / test-and-publish (push) Successful in 8s
All checks were successful
Test and Publish Templates / test-and-publish (push) Successful in 8s
This commit is contained in:
36
immich/backup.sh
Executable file
36
immich/backup.sh
Executable file
@@ -0,0 +1,36 @@
|
||||
#!/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}"
|
||||
Reference in New Issue
Block a user