diff --git a/scripts/db/synology_db_backup.sh b/scripts/db/synology_db_backup.sh index 914010c..9f0eb16 100755 --- a/scripts/db/synology_db_backup.sh +++ b/scripts/db/synology_db_backup.sh @@ -11,6 +11,7 @@ PG_DUMP_BIN="${PG_DUMP_BIN:-$(command -v pg_dump || true)}" PSQL_BIN="${PSQL_BIN:-$(command -v psql || true)}" DOCKER_BIN="${DOCKER_BIN:-$(command -v docker || true)}" COMPOSE_FILE="${COMPOSE_FILE:-${ROOT_DIR}/scripts/db/backup-client/docker-compose.yml}" +DOCKER_CMD=() if [[ ! -f "${ENV_FILE}" ]]; then echo "Missing environment file: ${ENV_FILE}" >&2 @@ -38,6 +39,15 @@ if [[ ! -f "${COMPOSE_FILE}" ]]; then exit 1 fi +if "${DOCKER_BIN}" info >/dev/null 2>&1; then + DOCKER_CMD=("${DOCKER_BIN}") +elif sudo -n "${DOCKER_BIN}" info >/dev/null 2>&1; then + DOCKER_CMD=(sudo -n "${DOCKER_BIN}") +else + echo "Docker daemon is not accessible for this user." >&2 + exit 1 +fi + mkdir -p "${BACKUP_DIR}" timestamp="$(date +%Y%m%d_%H%M%S)" output_file="${BACKUP_DIR}/${FILE_PREFIX}_${DB_NAME}_${timestamp}.dump" @@ -47,7 +57,7 @@ cleanup() { rm -f "${temporary_file}"; } trap cleanup EXIT export BACKUP_DIR -"${DOCKER_BIN}" compose --file "${COMPOSE_FILE}" run --rm --no-deps -T backup +"${DOCKER_CMD[@]}" compose --file "${COMPOSE_FILE}" run --rm --no-deps -T backup if [[ ! -s "${BACKUP_DIR}/current.dump" ]]; then echo "Backup failed: container dump file is empty." >&2