From eed6db39235aa9a6a5bb1689e9a92e33bdfe1b50 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Fri, 8 Mar 2019 09:33:53 +0100 Subject: [PATCH] src/bin/proxmox-backup-client.rs: impl option all-file-systems --- src/bin/catar.rs | 2 +- src/bin/proxmox-backup-client.rs | 8 ++++++-- src/catar/encoder.rs | 2 +- src/client/catar_backup_stream.rs | 8 ++++---- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/bin/catar.rs b/src/bin/catar.rs index ae02a1bf..82e95d10 100644 --- a/src/bin/catar.rs +++ b/src/bin/catar.rs @@ -144,7 +144,7 @@ fn create_archive( let mut writer = std::io::BufWriter::with_capacity(1024*1024, file); - CaTarEncoder::encode(source, &mut dir, all_file_systems, &mut writer, verbose)?; + CaTarEncoder::encode(source, &mut dir, &mut writer, all_file_systems, verbose)?; writer.flush()?; diff --git a/src/bin/proxmox-backup-client.rs b/src/bin/proxmox-backup-client.rs index ca6eef62..8408a05c 100644 --- a/src/bin/proxmox-backup-client.rs +++ b/src/bin/proxmox-backup-client.rs @@ -35,6 +35,7 @@ fn backup_directory>( backup_id: &str, backup_time: DateTime, chunk_size: Option, + all_file_systems: bool, verbose: bool, ) -> Result<(), Error> { @@ -53,7 +54,7 @@ fn backup_directory>( let path = format!("api2/json/admin/datastore/{}/catar?{}", repo.store, query); - let stream = CaTarBackupStream::open(dir_path.as_ref(), verbose)?; + let stream = CaTarBackupStream::open(dir_path.as_ref(), all_file_systems, verbose)?; let body = Body::wrap_stream(stream); @@ -298,6 +299,8 @@ fn create_backup( let repo = BackupRepository::parse(repo_url)?; + let all_file_systems = param["all-file-systems"].as_bool().unwrap_or(false); + let verbose = param["verbose"].as_bool().unwrap_or(false); let chunk_size_opt = param["chunk-size"].as_u64().map(|v| v*1024); @@ -352,7 +355,8 @@ fn create_backup( for (filename, target) in upload_list { println!("Upload '{}' to '{:?}' as {}", filename, repo, target); - backup_directory(&mut client, &repo, &filename, &target, backup_id, backup_time, chunk_size_opt, verbose)?; + backup_directory(&mut client, &repo, &filename, &target, backup_id, backup_time, + chunk_size_opt, all_file_systems, verbose)?; } let end_time = Local.timestamp(Local::now().timestamp(), 0); diff --git a/src/catar/encoder.rs b/src/catar/encoder.rs index bd652143..5106764b 100644 --- a/src/catar/encoder.rs +++ b/src/catar/encoder.rs @@ -43,8 +43,8 @@ impl <'a, W: Write> CaTarEncoder<'a, W> { pub fn encode( path: PathBuf, dir: &mut nix::dir::Dir, - all_file_systems: bool, writer: &'a mut W, + all_file_systems: bool, verbose: bool, ) -> Result<(), Error> { diff --git a/src/client/catar_backup_stream.rs b/src/client/catar_backup_stream.rs index 4deaaa87..66bbfa1e 100644 --- a/src/client/catar_backup_stream.rs +++ b/src/client/catar_backup_stream.rs @@ -36,7 +36,7 @@ impl Drop for CaTarBackupStream { impl CaTarBackupStream { - pub fn new(mut dir: Dir, path: PathBuf, verbose: bool) -> Result { + pub fn new(mut dir: Dir, path: PathBuf, all_file_systems: bool, verbose: bool) -> Result { let mut buffer = Vec::with_capacity(4096); unsafe { buffer.set_len(buffer.capacity()); } @@ -44,7 +44,7 @@ impl CaTarBackupStream { let child = thread::spawn(move|| { let mut writer = unsafe { std::fs::File::from_raw_fd(tx) }; - if let Err(err) = CaTarEncoder::encode(path, &mut dir, false, &mut writer, verbose) { + if let Err(err) = CaTarEncoder::encode(path, &mut dir, &mut writer, all_file_systems, verbose) { eprintln!("catar encode failed - {}", err); } }); @@ -54,12 +54,12 @@ impl CaTarBackupStream { Ok(Self { pipe: Some(pipe), buffer, child: Some(child) }) } - pub fn open(dirname: &Path, verbose: bool) -> Result { + pub fn open(dirname: &Path, all_file_systems: bool, verbose: bool) -> Result { let dir = nix::dir::Dir::open(dirname, OFlag::O_DIRECTORY, Mode::empty())?; let path = std::path::PathBuf::from(dirname); - Self::new(dir, path, verbose) + Self::new(dir, path, all_file_systems, verbose) } }