@@ -341,14 +341,7 @@ if [ -d /legacy/apphub_logs ]; then
341341 cp -a /legacy/apphub_logs/. /data/logs/legacy-apphub/ 2>/dev/null || true
342342fi
343343
344- # ---------------- Legacy AppHub backup (restic-repo) ----------------
345- if [ -d /legacy/apphub_data/backup/restic-repo ]; then
346- log_step "Copying legacy app backup repository (restic-repo)"
347- mkdir -p /data/backup/restic-repo
348- cp -a /legacy/apphub_data/backup/restic-repo/. /data/backup/restic-repo/ 2>/dev/null || true
349- fi
350-
351- # ---------------- Legacy config handoff ----------------
344+ # ---------------- Legacy config handoff (must precede backup migration) ----------------
352345cfg=""
353346sysini=""
354347product_auth_dir=""
@@ -369,6 +362,50 @@ done
369362[ -n "$sysini" ] && { mkdir -p /data/.w9-migration; cp -a "$sysini" /data/.w9-migration/system.ini; } || true
370363[ -f /legacy/docker-daemon.json ] && { mkdir -p /data/.w9-migration; cp -a /legacy/docker-daemon.json /data/.w9-migration/legacy-daemon.json; } || true
371364
365+ # ---------------- Legacy AppHub backup (restic-repo) ----------------
366+ # Must run AFTER config discovery so we can read the legacy repopath.
367+ if [ -d /legacy/apphub_data ]; then
368+ _w9_backup_src=""
369+ # 1) Respect the legacy system.ini repopath if available.
370+ if [ -n "$sysini" ] && [ -f "$sysini" ]; then
371+ _w9_legacy_repopath="$(ini_get "$sysini" volume_backup repopath)"
372+ if [ -n "$_w9_legacy_repopath" ]; then
373+ # Legacy repopath is typically /data/backup/restic-repo.
374+ # /data was a symlink to /app/data inside the old AppHub container,
375+ # so the volume-relative path is the repopath with /data/ stripped.
376+ _w9_rel="${_w9_legacy_repopath#/data/}"
377+ if [ -n "$_w9_rel" ] && [ "$_w9_rel" != "$_w9_legacy_repopath" ] && [ -d "/legacy/apphub_data/${_w9_rel}" ]; then
378+ _w9_backup_src="/legacy/apphub_data/${_w9_rel}"
379+ log_info "Legacy repopath from system.ini: ${_w9_legacy_repopath} -> volume path: ${_w9_rel}"
380+ fi
381+ fi
382+ fi
383+ # 2) Fallback: default path inside the volume.
384+ if [ -z "$_w9_backup_src" ] && [ -d /legacy/apphub_data/backup/restic-repo ]; then
385+ _w9_backup_src="/legacy/apphub_data/backup/restic-repo"
386+ log_info "Using default legacy backup path: backup/restic-repo"
387+ fi
388+ # 3) Fallback: restic-repo directly at volume root (older variants).
389+ if [ -z "$_w9_backup_src" ] && [ -d /legacy/apphub_data/restic-repo ]; then
390+ _w9_backup_src="/legacy/apphub_data/restic-repo"
391+ log_info "Using volume-root legacy backup path: restic-repo"
392+ fi
393+
394+ if [ -n "$_w9_backup_src" ]; then
395+ log_step "Copying legacy app backup repository from ${_w9_backup_src}"
396+ mkdir -p /data/backup/restic-repo
397+ if cp -a "${_w9_backup_src}/." /data/backup/restic-repo/; then
398+ log_info "Legacy app backup repository copied successfully"
399+ else
400+ log_info "WARNING: Failed to copy legacy app backup repository (cp exited non-zero)"
401+ fi
402+ else
403+ log_info "Legacy apphub_data volume is mounted but no backup repository found inside it"
404+ fi
405+ else
406+ log_info "Legacy apphub_data volume not found — skipping app backup migration"
407+ fi
408+
372409if [ -n "$product_auth_dir" ] && [ -d "$product_auth_dir" ]; then
373410 log_step "Copying legacy product auth data"
374411 mkdir -p /data/config/product-auth
@@ -450,6 +487,15 @@ _legacy_transform_volumes() {
450487 _add_ro_volume apphub_logs apphub_logs
451488 _add_ro_volume apphub_media apphub_media
452489 _add_ro_volume apphub_data apphub_data
490+
491+ # Diagnostic: log whether the apphub_data (backup) volume was resolved.
492+ _w9_apphub_data_resolved=" $( legacy_resolve_volume_for_role apphub_data 2> /dev/null || true) "
493+ if [ -n " $_w9_apphub_data_resolved " ]; then
494+ log_info " Legacy apphub_data volume resolved: ${_w9_apphub_data_resolved} "
495+ else
496+ log_info " Legacy apphub_data volume NOT found — app backups will not be migrated"
497+ fi
498+
453499 local host_compose_dir service_root_dir download_root_dir
454500 host_compose_dir=" $( legacy_host_compose_dir 2> /dev/null || true) "
455501 service_root_dir=" $( legacy_service_root_dir 2> /dev/null || true) "
0 commit comments