From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id C758A619D5 for ; Mon, 30 Nov 2020 16:23:11 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id BE27F17DFB for ; Mon, 30 Nov 2020 16:22:41 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 4D66C17DF1 for ; Mon, 30 Nov 2020 16:22:41 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 19C094439D for ; Mon, 30 Nov 2020 16:22:41 +0100 (CET) From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= To: pbs-devel@lists.proxmox.com Date: Mon, 30 Nov 2020 16:22:18 +0100 Message-Id: <20201130152220.658777-3-f.gruenbichler@proxmox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201130152220.658777-1-f.gruenbichler@proxmox.com> References: <20201130152220.658777-1-f.gruenbichler@proxmox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.024 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust 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] [PATCH proxmox-backup 2/4] gc: log index files found outside of expected scheme X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Nov 2020 15:23:11 -0000 for safety reason, GC finds and marks all index files below the datastore base path. as a result of regular operations, only index files within the expected scheme of // should exist. add a small check + warning if the index list contains index files out side of this expected scheme, so that an admin with shell access can investigate. Signed-off-by: Fabian Grünbichler --- Notes: we could log the full path to syslog/journal as well src/backup/datastore.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/backup/datastore.rs b/src/backup/datastore.rs index b199f11f..2700d6e9 100644 --- a/src/backup/datastore.rs +++ b/src/backup/datastore.rs @@ -3,6 +3,7 @@ use std::io::{self, Write}; use std::path::{Path, PathBuf}; use std::sync::{Arc, Mutex}; use std::convert::TryFrom; +use std::str::FromStr; use std::time::Duration; use std::fs::File; @@ -474,12 +475,24 @@ impl DataStore { let mut done = 0; let mut last_percentage: usize = 0; + let mut strange_paths_count: u64 = 0; + for img in image_list { worker.check_abort()?; tools::fail_on_shutdown()?; + if let Some(backup_dir_path) = img.parent() { + let backup_dir_path = backup_dir_path.strip_prefix(self.base_path())?; + if let Some(backup_dir_str) = backup_dir_path.to_str() { + if BackupDir::from_str(backup_dir_str).is_err() { + strange_paths_count += 1; + } + } + } + let path = self.chunk_store.relative_path(&img); + match std::fs::File::open(&path) { Ok(file) => { if let Ok(archive_type) = archive_type(&img) { @@ -514,6 +527,15 @@ impl DataStore { } } + if strange_paths_count > 0 { + crate::task_log!( + worker, + "found (and marked) {} index files outside of expected directory scheme", + strange_paths_count, + ); + } + + Ok(()) } -- 2.20.1