[pbs-devel] [PATCH v8 proxmox-backup 55/69] client: pxar: opt encode cli exclude patterns as Prelude
Christian Ebner
c.ebner at proxmox.com
Tue May 28 11:42:49 CEST 2024
Instead of encoding the pxar cli exclude patterns as regular file
within the root directory of an archive, store this information
directly after the pxar format version entry in the entry of kind
Prelude.
This behavior is however currently exclusive to the archives written
with format version 2 in a split metadata and payload case.
This is a breaking change for the encoding of new cli exclude
parameters. Any new exclude parameter will not be added to an already
present .pxar-cliexclude file, and it will not be created if not
present.
Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
---
changes since version 7:
- no changes
changes since version 6:
- adapt to field naming change for PxarWriters
pbs-client/src/pxar/create.rs | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/pbs-client/src/pxar/create.rs b/pbs-client/src/pxar/create.rs
index 9a9882fc7..528577520 100644
--- a/pbs-client/src/pxar/create.rs
+++ b/pbs-client/src/pxar/create.rs
@@ -225,9 +225,6 @@ where
set.insert(stat.st_dev);
}
- let metadata_mode = options.previous_ref.is_some() && writers.archive.payload().is_some();
- let mut encoder = Encoder::new(writers.archive, &metadata, None).await?;
-
let mut patterns = options.patterns;
if options.skip_lost_and_found {
@@ -237,6 +234,15 @@ where
MatchType::Exclude,
)?);
}
+
+ let cli_params_content = generate_pxar_excludes_cli(&patterns[..]);
+ let cli_params = if options.previous_ref.is_some() {
+ Some(cli_params_content.as_slice())
+ } else {
+ None
+ };
+
+ let metadata_mode = options.previous_ref.is_some() && writers.archive.payload().is_some();
let (previous_payload_index, previous_metadata_accessor) =
if let Some(refs) = options.previous_ref {
(
@@ -247,6 +253,8 @@ where
(None, None)
};
+ let mut encoder = Encoder::new(writers.archive, &metadata, cli_params).await?;
+
let mut archiver = Archiver {
feature_flags,
fs_feature_flags,
@@ -348,7 +356,7 @@ impl Archiver {
let mut file_list = self.generate_directory_file_list(&mut dir, is_root)?;
- if is_root && old_patterns_count > 0 {
+ if is_root && old_patterns_count > 0 && previous_metadata_accessor.is_none() {
file_list.push(FileListEntry {
name: CString::new(".pxarexclude-cli").unwrap(),
path: PathBuf::new(),
--
2.39.2
More information about the pbs-devel
mailing list