#!/bin/bash borgBackupAppToLocation() { local idx="$1" local app_name="$2" local manifest_sha="$3" local source_path="$containers_dir$app_name" if [[ ! -d "$source_path" ]]; then isError "Source path missing for $app_name: $source_path" return 1 fi borgEnvExport "$idx" || return 1 local host_tag="${CFG_INSTALL_NAME:-libreportal}" local archive archive=$(borgArchiveName "$app_name" "$host_tag") local comment="app=$app_name host=$host_tag engine=libreportal" [[ -n "$manifest_sha" ]] && comment+=" manifest=$manifest_sha" # Exclude the raw DB data dirs on the live path (see backup_db.sh). local exclude_args=() local p while IFS= read -r p; do [[ -n "$p" ]] && exclude_args+=(--exclude "$p") done <<< "${backup_exclude_paths:-}" local loc_name loc_name=$(resticLocationName "$idx") isNotice "Snapshotting $app_name → $loc_name (archive: $archive)" sudo -E -u "$docker_install_user" borg create \ --comment "$comment" \ --compression auto,zstd \ "${exclude_args[@]}" \ "::$archive" \ "$source_path" local rc=$? if [[ $rc -eq 0 ]]; then isSuccessful "Backup created in $loc_name: $archive" echo "$archive" else isError "Backup to $loc_name failed for $app_name" fi borgEnvUnset return $rc }