Keep the local index when remote nuke cannot list or find the destination (closes #292)
check / check (push) Canceled after 0s

`remote nuke` took a destination store it could not list, or one
without `vaultik-destination.txt` while the local index held
snapshots, as a warning: it then cleared the local snapshot records,
and for an unplugged volume's empty mount point reported the store
empty and exited zero. Nuke now fails on either before it removes
anything, without its advice to run it again, which would fail the
same way. The bulk remove it runs fails on either too; only a
local-only remove still goes on with a warning. Nuke also deletes each
snapshot's remote metadata before its local record, so a failed delete
keeps the snapshot in the local index rather than leaving it on the
store as a remote-only snapshot.

Model: opus-5-5
This commit was merged in pull request #384.
This commit is contained in:
2026-10-14 06:47:38 +02:00
parent 2125a9d451
commit 16b03dfda5
8 changed files with 142 additions and 37 deletions
+8 -1
View File
@@ -55,12 +55,19 @@ func (v *Vaultik) NukeRemote(force bool) error {
}
// Checked before anything is deleted: running nuke again would fail
// the same way, so the advice below must not follow this error.
// the same way, so the advice below must not follow these errors.
// The listing also fails on a destination without the marker while
// the local index holds snapshots.
err := v.EnsureStorageBinding()
if err != nil {
return err
}
_, err = v.listAllRemoteSnapshotKeys()
if err != nil {
return err
}
err = v.emptyDestinationStore()
if err != nil {
v.UI.Warningf("Run '%s' again to delete what is left on the "+