Skip to content

Commit 6aa65e8

Browse files
committed
fix: expand legacy backup volume discovery — add w9appmanage_data + host-path fallback
The old Cockpit architecture deployed AppHub via the 'w9appmanage' Compose project, producing volumes like 'w9appmanage_data' — not 'apphub_data'. Our volume role resolver now also tries: - w9appmanage_data - websoft9_apphub_data - websoft9_data Additionally, when the apphub_data role volume is not found at all, the transform script falls back to searching host-level paths (host-compose, service-root, download-root) for the backup repository, using the legacy system.ini repopath to guide the lookup.
1 parent 471feda commit 6aa65e8

2 files changed

Lines changed: 35 additions & 3 deletions

File tree

install/lib/common.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ legacy_role_candidates() {
130130
apphub_logs) printf '%s\n' apphub_logs ;;
131131
apphub_media) printf '%s\n' apphub_media ;;
132132
apphub_config) printf '%s\n' apphub_config ;;
133-
apphub_data) printf '%s\n' apphub_data ;;
133+
apphub_data) printf '%s\n' apphub_data w9appmanage_data websoft9_apphub_data websoft9_data ;;
134134
portainer) printf '%s\n' portainer portainer_data ;;
135135
gitea) printf '%s\n' gitea gitea_data ;;
136136
nginx_data) printf '%s\n' nginx_data ;;

install/lib/upgrade-legacy.sh

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ if [ -d /legacy/apphub_data ]; then
371371
_w9_legacy_repopath="$(ini_get "$sysini" volume_backup repopath)"
372372
if [ -n "$_w9_legacy_repopath" ]; then
373373
# Legacy repopath is typically /data/backup/restic-repo.
374-
# /data was a symlink to /app/data inside the old AppHub container,
374+
# /data was a symlink to the apphub data volume mount point,
375375
# so the volume-relative path is the repopath with /data/ stripped.
376376
_w9_rel="${_w9_legacy_repopath#/data/}"
377377
if [ -n "$_w9_rel" ] && [ "$_w9_rel" != "$_w9_legacy_repopath" ] && [ -d "/legacy/apphub_data/${_w9_rel}" ]; then
@@ -403,7 +403,39 @@ if [ -d /legacy/apphub_data ]; then
403403
log_info "Legacy apphub_data volume is mounted but no backup repository found inside it"
404404
fi
405405
else
406-
log_info "Legacy apphub_data volume not found — skipping app backup migration"
406+
log_info "Legacy apphub_data volume not mounted — trying host-path fallbacks"
407+
# 4) Some old deployments stored backups on a host bind mount (e.g. /data/backup/restic-repo).
408+
# The host-compose dir may contain a backup/ subtree.
409+
_w9_backup_src=""
410+
if [ -n "$sysini" ] && [ -f "$sysini" ]; then
411+
_w9_legacy_repopath="$(ini_get "$sysini" volume_backup repopath)"
412+
if [ -n "$_w9_legacy_repopath" ]; then
413+
_w9_rel="${_w9_legacy_repopath#/data/}"
414+
for _w9_base in /legacy/host-compose /legacy/service-root /legacy/download-root; do
415+
if [ -n "$_w9_rel" ] && [ "$_w9_rel" != "$_w9_legacy_repopath" ] && [ -d "${_w9_base}/${_w9_rel}" ]; then
416+
_w9_backup_src="${_w9_base}/${_w9_rel}"
417+
log_info "Legacy backup found at host path: ${_w9_backup_src}"
418+
break
419+
fi
420+
done
421+
fi
422+
fi
423+
if [ -z "$_w9_backup_src" ] && [ -d /legacy/host-compose/backup/restic-repo ]; then
424+
_w9_backup_src="/legacy/host-compose/backup/restic-repo"
425+
log_info "Legacy backup found at /data/compose/backup/restic-repo"
426+
fi
427+
428+
if [ -n "$_w9_backup_src" ]; then
429+
log_step "Copying legacy app backup repository from ${_w9_backup_src}"
430+
mkdir -p /data/backup/restic-repo
431+
if cp -a "${_w9_backup_src}/." /data/backup/restic-repo/; then
432+
log_info "Legacy app backup repository copied successfully"
433+
else
434+
log_info "WARNING: Failed to copy legacy app backup repository (cp exited non-zero)"
435+
fi
436+
else
437+
log_info "No legacy backup repository found in any known location — skipping app backup migration"
438+
fi
407439
fi
408440
409441
if [ -n "$product_auth_dir" ] && [ -d "$product_auth_dir" ]; then

0 commit comments

Comments
 (0)