[pbs-devel] [PATCH v8 proxmox-backup 32/69] file restore: cover split metadata and payload archives
Fabian Grünbichler
f.gruenbichler at proxmox.com
Tue Jun 4 10:28:09 CEST 2024
On May 28, 2024 11:42 am, Christian Ebner wrote:
> Attach the payload data archive as input stream to the decoder
> and accessor instances for split archives.
> Allows to restore contents from split archives via the
> `proxmox-file-restore extract` command, by passing the metadata
> archive name.
>
> Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
> ---
> changes since version 7:
> - no changes
>
> changes since version 6:
> - s/get_local_pxar_reader/get_remote_pxar_reader
> - adapt to PxarVariant pxar interface
>
> proxmox-file-restore/src/main.rs | 22 +++++++++++++++++++---
> 1 file changed, 19 insertions(+), 3 deletions(-)
>
> diff --git a/proxmox-file-restore/src/main.rs b/proxmox-file-restore/src/main.rs
> index c9a545677..0de2b47e6 100644
> --- a/proxmox-file-restore/src/main.rs
> +++ b/proxmox-file-restore/src/main.rs
> @@ -470,9 +470,25 @@ async fn extract(
>
> match path {
> ExtractPath::Pxar(archive_name, path) => {
> - let (reader, archive_size) =
> - get_remote_pxar_reader(&archive_name, client, &manifest, crypt_config).await?;
> - let decoder = Accessor::new(pxar::PxarVariant::Unified(reader), archive_size).await?;
> + let (reader, archive_size) = get_remote_pxar_reader(
> + &archive_name,
> + client.clone(),
> + &manifest,
> + crypt_config.clone(),
> + )
> + .await?;
> +
> + let reader = if let Some(archive_base_name) = archive_name.strip_suffix(".mpxar.didx") {
> + let payload_archive_name = format!("{archive_base_name}.ppxar.didx");
> + let (payload_reader, payload_size) =
> + get_remote_pxar_reader(&payload_archive_name, client, &manifest, crypt_config)
> + .await?;
> + pxar::PxarVariant::Split(reader, (payload_reader, payload_size))
> + } else {
> + pxar::PxarVariant::Unified(reader)
> + };
same here, this could use get_pxar_archive_names if it were accessible,
e.g. via pbs-client
> + let decoder = Accessor::new(reader, archive_size).await?;
> +
> extract_to_target(decoder, &path, target, format, zstd).await?;
> }
> ExtractPath::VM(file, path) => {
> --
> 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