From 25f10616a5163a274dbce0cc55383c129249e5f8 Mon Sep 17 00:00:00 2001 From: jarek Date: Fri, 31 Jul 2026 10:10:55 +0200 Subject: [PATCH] exclude docker sockets and host system paths from volume backups --- src/lib/components/backup/VolumePicker.svelte | 21 ++++++---- src/lib/server/backups/discovery-core.ts | 10 +++++ src/lib/utils/mounts.ts | 12 +++++- src/lib/utils/unbackupable-mounts.ts | 42 +++++++++++++++++++ 4 files changed, 76 insertions(+), 9 deletions(-) create mode 100644 src/lib/utils/unbackupable-mounts.ts diff --git a/src/lib/components/backup/VolumePicker.svelte b/src/lib/components/backup/VolumePicker.svelte index a3dd1e8..45dbe65 100644 --- a/src/lib/components/backup/VolumePicker.svelte +++ b/src/lib/components/backup/VolumePicker.svelte @@ -20,6 +20,8 @@ mountPoint: string; mountType?: 'volume' | 'bind'; source?: string; + /** Socket / host system bind the engine won't capture: listed but not selectable. */ + unbackupable?: boolean; } interface Props { @@ -40,7 +42,10 @@ showBindWarning = true }: Props = $props(); - const bindMounts = $derived(volumes.filter((v) => v.mountType === 'bind')); + // Unbackupable binds (docker.sock, host system paths) are listed for context but + // never count as backup targets and can't be selected. The engine skips them too. + const backupable = $derived(volumes.filter((v) => !v.unbackupable)); + const bindMounts = $derived(backupable.filter((v) => v.mountType === 'bind')); function toggleVolume(name: string) { if (selectedVolumes.includes(name)) { @@ -56,7 +61,7 @@ so the switch clearly belongs to the volumes below it. -->
- +
@@ -73,11 +78,11 @@
{#each volumes as vol} -