src/bin/proxmox-backup-client.rs: allow to uploag .log files (as binary blobs)

This commit is contained in:
Dietmar Maurer 2019-07-24 13:07:02 +02:00
parent 5b72c9b4f7
commit 79679c2d6e
1 changed files with 12 additions and 2 deletions

View File

@ -32,7 +32,7 @@ use futures::*;
use tokio::sync::mpsc; use tokio::sync::mpsc;
lazy_static! { lazy_static! {
static ref BACKUPSPEC_REGEX: Regex = Regex::new(r"^([a-zA-Z0-9_-]+\.(?:pxar|img|conf)):(.+)$").unwrap(); static ref BACKUPSPEC_REGEX: Regex = Regex::new(r"^([a-zA-Z0-9_-]+\.(?:pxar|img|conf|log)):(.+)$").unwrap();
static ref REPO_URL_SCHEMA: Arc<Schema> = Arc::new( static ref REPO_URL_SCHEMA: Arc<Schema> = Arc::new(
StringSchema::new("Repository URL.") StringSchema::new("Repository URL.")
@ -455,7 +455,7 @@ fn create_backup(
let mut upload_list = vec![]; let mut upload_list = vec![];
enum BackupType { PXAR, IMAGE, CONFIG }; enum BackupType { PXAR, IMAGE, CONFIG, LOGFILE };
for backupspec in backupspec_list { for backupspec in backupspec_list {
let (target, filename) = parse_backupspec(backupspec.as_str().unwrap())?; let (target, filename) = parse_backupspec(backupspec.as_str().unwrap())?;
@ -495,6 +495,12 @@ fn create_backup(
} }
upload_list.push((BackupType::CONFIG, filename.to_owned(), target.to_owned(), metadata.len())); upload_list.push((BackupType::CONFIG, filename.to_owned(), target.to_owned(), metadata.len()));
} }
"log" => {
if !file_type.is_file() {
bail!("got unexpected file type (expected regular file)");
}
upload_list.push((BackupType::LOGFILE, filename.to_owned(), target.to_owned(), metadata.len()));
}
_ => { _ => {
bail!("got unknown archive extension '{}'", extension); bail!("got unknown archive extension '{}'", extension);
} }
@ -537,6 +543,10 @@ fn create_backup(
println!("Upload config file '{}' to '{:?}' as {}", filename, repo, target); println!("Upload config file '{}' to '{:?}' as {}", filename, repo, target);
client.upload_blob_from_file(&filename, &target, crypt_config.clone(), true).wait()?; client.upload_blob_from_file(&filename, &target, crypt_config.clone(), true).wait()?;
} }
BackupType::LOGFILE => {
println!("Upload log file '{}' to '{:?}' as {}", filename, repo, target);
client.upload_blob_from_file(&filename, &target, crypt_config.clone(), true).wait()?;
}
BackupType::PXAR => { BackupType::PXAR => {
println!("Upload directory '{}' to '{:?}' as {}", filename, repo, target); println!("Upload directory '{}' to '{:?}' as {}", filename, repo, target);
backup_directory( backup_directory(