add --backup-time to allow import of archival data

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
Fabian Grünbichler 2024-04-23 10:03:42 +02:00
parent e3ae976fd6
commit 9602df9091
2 changed files with 10 additions and 4 deletions

View File

@ -2,6 +2,7 @@ use std::ffi::OsString;
use anyhow::{bail, Context, Error}; use anyhow::{bail, Context, Error};
use proxmox_sys::linux::tty; use proxmox_sys::linux::tty;
use proxmox_time::epoch_i64;
mod vma; mod vma;
mod vma2pbs; mod vma2pbs;
@ -20,6 +21,8 @@ Options:
Namespace Namespace
--vmid <VMID> --vmid <VMID>
Backup ID Backup ID
[--backup-time <EPOCH>]
Backup timestamp
--fingerprint <FINGERPRINT> --fingerprint <FINGERPRINT>
Proxmox Backup Server Fingerprint [env: PBS_FINGERPRINT=] Proxmox Backup Server Fingerprint [env: PBS_FINGERPRINT=]
--keyfile <KEYFILE> --keyfile <KEYFILE>
@ -81,6 +84,8 @@ fn parse_args() -> Result<BackupVmaToPbsArgs, Error> {
let pbs_repository = args.value_from_str("--repository")?; let pbs_repository = args.value_from_str("--repository")?;
let namespace = args.opt_value_from_str("--ns")?; let namespace = args.opt_value_from_str("--ns")?;
let vmid = args.value_from_str("--vmid")?; let vmid = args.value_from_str("--vmid")?;
let backup_time: Option<i64> = args.opt_value_from_str("--backup-time")?;
let backup_time = backup_time.unwrap_or_else(|| epoch_i64());
let fingerprint = args.opt_value_from_str("--fingerprint")?; let fingerprint = args.opt_value_from_str("--fingerprint")?;
let keyfile = args.opt_value_from_str("--keyfile")?; let keyfile = args.opt_value_from_str("--keyfile")?;
let master_keyfile = args.opt_value_from_str("--master-keyfile")?; let master_keyfile = args.opt_value_from_str("--master-keyfile")?;
@ -165,6 +170,7 @@ fn parse_args() -> Result<BackupVmaToPbsArgs, Error> {
pbs_repository, pbs_repository,
namespace, namespace,
backup_id: vmid, backup_id: vmid,
backup_time,
pbs_password, pbs_password,
keyfile, keyfile,
key_password, key_password,

View File

@ -14,7 +14,7 @@ use proxmox_backup_qemu::{
proxmox_backup_new_ns, proxmox_backup_register_image, proxmox_backup_write_data, proxmox_backup_new_ns, proxmox_backup_register_image, proxmox_backup_write_data,
PROXMOX_BACKUP_DEFAULT_CHUNK_SIZE, PROXMOX_BACKUP_DEFAULT_CHUNK_SIZE,
}; };
use proxmox_time::{epoch_i64, epoch_to_rfc3339}; use proxmox_time::epoch_to_rfc3339;
use scopeguard::defer; use scopeguard::defer;
use crate::vma::VmaReader; use crate::vma::VmaReader;
@ -26,6 +26,7 @@ pub struct BackupVmaToPbsArgs {
pub pbs_repository: String, pub pbs_repository: String,
pub namespace: Option<String>, pub namespace: Option<String>,
pub backup_id: String, pub backup_id: String,
pub backup_time: i64,
pub pbs_password: String, pub pbs_password: String,
pub keyfile: Option<String>, pub keyfile: Option<String>,
pub key_password: Option<String>, pub key_password: Option<String>,
@ -60,8 +61,7 @@ fn create_pbs_backup_task(args: BackupVmaToPbsArgs) -> Result<*mut ProxmoxBackup
println!("compress: {}", args.compress); println!("compress: {}", args.compress);
println!("encrypt: {}", args.encrypt); println!("encrypt: {}", args.encrypt);
let backup_time = epoch_i64(); println!("backup time: {}", epoch_to_rfc3339(args.backup_time)?);
println!("backup time: {}", epoch_to_rfc3339(backup_time)?);
let mut pbs_err: *mut c_char = ptr::null_mut(); let mut pbs_err: *mut c_char = ptr::null_mut();
@ -83,7 +83,7 @@ fn create_pbs_backup_task(args: BackupVmaToPbsArgs) -> Result<*mut ProxmoxBackup
pbs_repository_cstr.as_ptr(), pbs_repository_cstr.as_ptr(),
ns_cstr.as_ptr(), ns_cstr.as_ptr(),
backup_id_cstr.as_ptr(), backup_id_cstr.as_ptr(),
backup_time as u64, args.backup_time as u64,
PROXMOX_BACKUP_DEFAULT_CHUNK_SIZE, PROXMOX_BACKUP_DEFAULT_CHUNK_SIZE,
pbs_password_cstr.as_ptr(), pbs_password_cstr.as_ptr(),
keyfile_ptr, keyfile_ptr,