From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 315031FF13C for ; Thu, 16 Apr 2026 19:19:08 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id EB9E9DA31; Thu, 16 Apr 2026 19:19:07 +0200 (CEST) From: Hannes Laimer To: pbs-devel@lists.proxmox.com Subject: [PATCH proxmox-backup v7 0/9] fixes #6195: add support for moving groups and namespaces Date: Thu, 16 Apr 2026 19:18:21 +0200 Message-ID: <20260416171830.266553-1-h.laimer@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1776359835099 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.082 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [namespace.rs,datastore.rs] Message-ID-Hash: K3NOZJQT6KVJW54DNKJOGDLKRVHYYWJQ X-Message-ID-Hash: K3NOZJQT6KVJW54DNKJOGDLKRVHYYWJQ X-MailFrom: h.laimer@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox Backup Server development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: 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. v7, thanks @Fabian and @Arthur!: - allow moving into existing target namespaces - merge groups with the same name when owner matches and source snapshots are strictly newer than target snapshots - lock and move snapshots in batches(512) to avoid FD exhaustion - assert new-style locking upfront - pre-create target group dir with source owner - use remove_dir for source cleanup, log errors instead of swallowing - rename 'new-ns' to 'target-ns', use dedicated POST endpoints /move-group and /move-namespace - relax move-group permissions: DATASTORE_PRUNE + ownership on source, DATASTORE_BACKUP + ownership on target - add max-depth, delete-source, and merge-group/merge-groups flags - add docs section and online help link for move dialogs - make ns and target-ns required in CLI, no need to keep the empty -> root thing since this is new v6, thanks @Fabian and @Dominik!: - drop ns locks, lock everything directly, like we do for delete - ui: disable prune for empty groups - ui: dont render verification status for empty groups v5, thanks @Chris!: - lock dir instead of .ns-lock file - improve cleanup of partially failed s3 moves - ui: show empty groups, re-order actions, add context menu - add cli commands for both ns and group moves Hannes Laimer (9): ui: show empty groups datastore: add move-group datastore: add move-namespace docs: add section on moving namespaces and groups api: add POST endpoint for move-group api: add POST endpoint for move-namespace ui: add move group action ui: add move namespace action cli: add move-namespace and move-group commands docs/storage.rst | 45 ++- pbs-datastore/src/backup_info.rs | 165 +++++++- pbs-datastore/src/datastore.rs | 422 +++++++++++++++++++- src/api2/admin/datastore.rs | 109 +++++ src/api2/admin/namespace.rs | 99 ++++- src/bin/proxmox_backup_manager/datastore.rs | 109 ++++- www/Makefile | 2 + www/OnlineHelpInfo.js | 4 + www/datastore/Content.js | 161 ++++++-- www/form/NamespaceSelector.js | 11 + www/window/GroupMove.js | 56 +++ www/window/NamespaceMove.js | 126 ++++++ 12 files changed, 1274 insertions(+), 35 deletions(-) create mode 100644 www/window/GroupMove.js create mode 100644 www/window/NamespaceMove.js -- 2.47.3