mirror of
https://git.proxmox.com/git/proxmox-backup
synced 2025-04-28 11:30:58 +00:00
file restore: cover split metadata and payload archives
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@proxmox.com>
This commit is contained in:
parent
00b0fbc4b6
commit
d4a22d05df
@ -470,9 +470,26 @@ 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 (archive_name, payload_archive_name) =
|
||||
pbs_client::tools::get_pxar_archive_names(&archive_name, &manifest)?;
|
||||
let (reader, archive_size) = get_remote_pxar_reader(
|
||||
&archive_name,
|
||||
client.clone(),
|
||||
&manifest,
|
||||
crypt_config.clone(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
let reader = if let Some(payload_archive_name) = payload_archive_name {
|
||||
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)
|
||||
};
|
||||
let decoder = Accessor::new(reader, archive_size).await?;
|
||||
|
||||
extract_to_target(decoder, &path, target, format, zstd).await?;
|
||||
}
|
||||
ExtractPath::VM(file, path) => {
|
||||
|
Loading…
Reference in New Issue
Block a user