]> git.proxmox.com Git - proxmox-backup.git/commitdiff
rc/bin/proxmox-backup-client.rs - restore: always download index.json.blob
authorDietmar Maurer <dietmar@proxmox.com>
Mon, 2 Sep 2019 12:14:32 +0000 (14:14 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Mon, 2 Sep 2019 12:14:32 +0000 (14:14 +0200)
src/bin/proxmox-backup-client.rs

index 0c89d40e9d32e5a1c08ca02d875a9d6fe2f1a0dc..9f402a54b24ff4387c523ef85a7987874f6b51cf 100644 (file)
@@ -887,7 +887,25 @@ fn restore(
         .custom_flags(libc::O_TMPFILE)
         .open("/tmp")?;
 
-    if server_archive_name.ends_with(".blob") {
+    const INDEX_BLOB_NAME: &str = "index.json.blob";
+
+    let index_data = client.download(INDEX_BLOB_NAME, Vec::with_capacity(64*1024)).wait()?;
+    let blob = DataBlob::from_raw(index_data)?;
+    blob.verify_crc()?;
+    let backup_index_data = blob.decode(crypt_config.clone())?;
+    let backup_index: Value = serde_json::from_slice(&backup_index_data[..])?;
+
+    if server_archive_name == INDEX_BLOB_NAME {
+        if let Some(target) = target {
+            file_set_contents(target, &backup_index_data, None)?;
+        } else {
+            let stdout = std::io::stdout();
+            let mut writer = stdout.lock();
+            writer.write_all(&backup_index_data)
+                .map_err(|err| format_err!("unable to pipe data - {}", err))?;
+        }
+
+    } else if server_archive_name.ends_with(".blob") {
         let mut tmpfile = client.download(&server_archive_name, tmpfile).wait()?;
         tmpfile.seek(SeekFrom::Start(0))?;
         let mut reader = DataBlobReader::new(tmpfile, crypt_config)?;