[pbs-devel] [PATCH v3 proxmox-backup 41/58] specs: add backup detection mode specification
Fabian Grünbichler
f.gruenbichler at proxmox.com
Thu Apr 4 16:54:32 CEST 2024
On March 28, 2024 1:36 pm, Christian Ebner wrote:
> Adds the specification for switching the detection mode used to
> identify regular files which changed since a reference backup run.
>
> Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
> ---
> changes since version 2:
> - removed unneeded vector storing archive names for which to enable
> metadata mode, set either for all or none
>
> pbs-client/src/backup_specification.rs | 40 ++++++++++++++++++++++++++
> 1 file changed, 40 insertions(+)
>
> diff --git a/pbs-client/src/backup_specification.rs b/pbs-client/src/backup_specification.rs
> index 619a3a9da..4b1dbd188 100644
> --- a/pbs-client/src/backup_specification.rs
> +++ b/pbs-client/src/backup_specification.rs
> @@ -4,6 +4,7 @@ use proxmox_schema::*;
>
> const_regex! {
> BACKUPSPEC_REGEX = r"^([a-zA-Z0-9_-]+\.(pxar|img|conf|log)):(.+)$";
> + DETECTION_MODE_REGEX = r"^(data|metadata(:[a-zA-Z0-9_-]+\.pxar)*)$";
this
> }
>
> pub const BACKUP_SOURCE_SCHEMA: Schema =
> @@ -11,6 +12,11 @@ pub const BACKUP_SOURCE_SCHEMA: Schema =
> .format(&ApiStringFormat::Pattern(&BACKUPSPEC_REGEX))
> .schema();
>
> +pub const BACKUP_DETECTION_MODE_SPEC: Schema =
> + StringSchema::new("Backup source specification ([data|metadata(:<label>,...)]).")
and this
> + .format(&ApiStringFormat::Pattern(&DETECTION_MODE_REGEX))
> + .schema();
> +
> pub enum BackupSpecificationType {
> PXAR,
> IMAGE,
> @@ -45,3 +51,37 @@ pub fn parse_backup_specification(value: &str) -> Result<BackupSpecification, Er
>
> bail!("unable to parse backup source specification '{}'", value);
> }
> +
> +/// Mode to detect file changes since last backup run
> +pub enum BackupDetectionMode {
> + /// Regular mode, re-encode payload data
> + Data,
> + /// Compare metadata, reuse payload chunks if metadata unchanged
> + Metadata,
and this now do not really match anymore?
> +}
> +
> +impl BackupDetectionMode {
> + /// Check if the selected mode is metadata based file change detection
> + pub fn is_metadata(&self) -> bool {
> + match self {
> + Self::Data => false,
> + Self::Metadata => true,
> + }
> + }
> +}
> +
> +pub fn parse_backup_detection_mode_specification(
> + value: &str,
> +) -> Result<BackupDetectionMode, Error> {
> + match (DETECTION_MODE_REGEX.regex_obj)().captures(value) {
> + Some(caps) => {
> + let mode = match caps.get(1).unwrap().as_str() {
> + "data" => BackupDetectionMode::Data,
> + "metadata" => BackupDetectionMode::Metadata,
> + _ => bail!("invalid backup detection mode"),
> + };
> + Ok(mode)
> + }
> + None => bail!("unable to parse backup detection mode specification '{value}'"),
> + }
> +}
> --
> 2.39.2
>
>
>
> _______________________________________________
> pbs-devel mailing list
> pbs-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
>
>
>
More information about the pbs-devel
mailing list