From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pbs-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id A1CB01FF165 for <inbox@lore.proxmox.com>; Thu, 8 May 2025 15:06:23 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 9A795FD43; Thu, 8 May 2025 15:06:41 +0200 (CEST) From: Christian Ebner <c.ebner@proxmox.com> To: pbs-devel@lists.proxmox.com Date: Thu, 8 May 2025 15:05:34 +0200 Message-Id: <20250508130555.494782-1-c.ebner@proxmox.com> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.028 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 Subject: [pbs-devel] [RFC v2 proxmox-backup 00/21] implement trash bin functionality X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion <pbs-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/> List-Post: <mailto:pbs-devel@lists.proxmox.com> List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com> This patch series implements a trash bin functionality, marking backup snapshots, groups and namespaces as trashed on prune and forget instead of deleting them immediately. Cleanup is deferred to the garbage collection job, allowing to recover the trashed items if removed by accident. In contrast to the previous version 1 of the patch series [0] which moved trashed items to a separate folder structure, this patch series utilizes the proposed `.trashed` marker file approach to mark and filter content items. These marker files have to be set and removed accordingly in a consistent manner and are used to filter in iterators based on the trash state. Sending this series as RFC in order to gain some initial feedback on the chosen implementation approach and possible shortcomings/oversights. Further, feedback especially for the design of the WebUI (which still has some rough edges) is very welcome! [0] https://lore.proxmox.com/pbs-devel/7db77767-ed54-4d7f-8caa-24b7216b159c@proxmox.com/T/ Christian Ebner (21): datastore/api: mark snapshots as trash on destroy datastore: mark groups as trash on destroy datastore: allow filtering of backups by their trash status datastore: ignore trashed snapshots for last successful backup sync: ignore trashed snapshots when reading from local source api: tape: check trash marker when trying to write snapshot sync: ignore trashed groups in local source reader datastore: namespace: add filter for trash status datastore: refactor recursive namespace removal datastore: mark namespace as trash instead of deleting it datastore: check for trash marker in namespace exists check datastore: clear trashed snapshot dir if re-creation requested datastore: recreate trashed backup groups if requested datastore: GC: clean-up trashed snapshots, groups and namespaces client: expose skip trash flags for cli commands api: datastore: add flag to list trashed snapshots only api: namespace: add option to list all namespaces, including trashed api: admin: implement endpoints to restore trashed contents ui: add recover for trashed items tab to datastore panel ui: drop 'permanent' in group/snapshot forget, default is to trash ui: allow to skip trash on namespace deletion pbs-datastore/examples/ls-snapshots.rs | 8 +- pbs-datastore/src/backup_info.rs | 130 +++- pbs-datastore/src/datastore.rs | 320 ++++++++- pbs-datastore/src/hierarchy.rs | 91 ++- pbs-datastore/src/lib.rs | 1 + proxmox-backup-client/src/group.rs | 14 +- proxmox-backup-client/src/namespace.rs | 14 +- proxmox-backup-client/src/snapshot.rs | 16 +- src/api2/admin/datastore.rs | 225 +++++- src/api2/admin/namespace.rs | 28 +- src/api2/backup/environment.rs | 1 + src/api2/tape/backup.rs | 20 +- src/backup/hierarchy.rs | 26 +- src/backup/verify.rs | 4 +- src/bin/proxmox-backup-manager.rs | 12 +- src/bin/proxmox_backup_manager/prune.rs | 2 +- src/server/prune_job.rs | 7 +- src/server/pull.rs | 25 +- src/server/sync.rs | 7 +- www/Makefile | 1 + www/datastore/Content.js | 4 +- www/datastore/Panel.js | 8 + www/datastore/RecoverTrashed.js | 876 ++++++++++++++++++++++++ www/window/NamespaceEdit.js | 21 +- 24 files changed, 1737 insertions(+), 124 deletions(-) create mode 100644 www/datastore/RecoverTrashed.js -- 2.39.5 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel