From: Hannes Laimer <h.laimer@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [PATCH proxmox-backup v6 0/8] fixes #6195: add support for moving groups and namespaces
Date: Tue, 31 Mar 2026 14:34:01 +0200 [thread overview]
Message-ID: <20260331123409.198353-1-h.laimer@proxmox.com> (raw)
Add support for moving backup groups and entire namespace subtrees to
a different location within the same datastore.
Groups are moved with exclusive per-group and per-snapshot locking.
For S3, objects are copied to the target prefix before deleting the
source. Namespace moves process groups individually, deferring and
retrying lock conflicts once, so partially failed moves can be
completed with move_group.
v6, thanks @Fabian and @Dominik!:
- drop ns locks, lock everything directly, like we do for delete. only
difference, we dont do partial group moves, reason being that we
cant move single snapshots, so cleanup would not really be possible
- ui: disable purne for empty groups
- ui: dont render verification status for empty groups
v5, thanks @Chris!:
- lock dir instead of `.ns-lock` file
- explicitly drop ns lock guards in specific order
- improve cleanup of partially failed s3 moves, we now create the local
empty dir+owner file before we start copying s3 objects, if any of
the s3 ops fail, the dir stays behind and can be deleted through the
UI(which also triggers a prefix cleanup on the s3 storage)
- update parameters for `DataStore::lookup_datastore()`
- ui: re-ordered actions, `move` now next to `verify`
- ui: add move to right-click context menu
- ui: show empty groups in the UI
- add cli commands for both ns and group moves
- add 2s ns lock timeout for worker tasks
*note*: given the UI change to show empty groups it could make sense to
not auto-delete a group if the last snapshot is deleted. For this series
though that is not relevant since we just need empty groups to be
deletable through the UI for partially failed s3 moves
Hannes Laimer (8):
ui: show empty groups
datastore: add move_group
datastore: add move_namespace
api: add PUT endpoint for move_group
api: add PUT endpoint for move_namespace
ui: add move group action
ui: add move namespace action
cli: add move-namespace and move-group commands
pbs-datastore/src/backup_info.rs | 153 ++++++++-
pbs-datastore/src/datastore.rs | 335 +++++++++++++++++++-
src/api2/admin/datastore.rs | 78 ++++-
src/api2/admin/namespace.rs | 78 ++++-
src/bin/proxmox_backup_manager/datastore.rs | 84 ++++-
www/Makefile | 2 +
www/datastore/Content.js | 161 ++++++++--
www/form/NamespaceSelector.js | 11 +
www/window/GroupMove.js | 56 ++++
www/window/NamespaceMove.js | 79 +++++
10 files changed, 1003 insertions(+), 34 deletions(-)
create mode 100644 www/window/GroupMove.js
create mode 100644 www/window/NamespaceMove.js
--
2.47.3
next reply other threads:[~2026-03-31 12:33 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-31 12:34 Hannes Laimer [this message]
2026-03-31 12:34 ` [PATCH proxmox-backup v6 1/8] ui: show empty groups Hannes Laimer
2026-03-31 12:34 ` [PATCH proxmox-backup v6 2/8] datastore: add move_group Hannes Laimer
2026-03-31 12:34 ` [PATCH proxmox-backup v6 3/8] datastore: add move_namespace Hannes Laimer
2026-03-31 12:34 ` [PATCH proxmox-backup v6 4/8] api: add PUT endpoint for move_group Hannes Laimer
2026-03-31 12:34 ` [PATCH proxmox-backup v6 5/8] api: add PUT endpoint for move_namespace Hannes Laimer
2026-03-31 12:34 ` [PATCH proxmox-backup v6 6/8] ui: add move group action Hannes Laimer
2026-03-31 12:34 ` [PATCH proxmox-backup v6 7/8] ui: add move namespace action Hannes Laimer
2026-04-02 9:28 ` Arthur Bied-Charreton
2026-03-31 12:34 ` [PATCH proxmox-backup v6 8/8] cli: add move-namespace and move-group commands Hannes Laimer
2026-04-02 9:22 ` Arthur Bied-Charreton
2026-04-02 9:34 ` [PATCH proxmox-backup v6 0/8] fixes #6195: add support for moving groups and namespaces Arthur Bied-Charreton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260331123409.198353-1-h.laimer@proxmox.com \
--to=h.laimer@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox