catar: implement create
This commit is contained in:
parent
e86c49247e
commit
02c7d8e522
@ -8,10 +8,11 @@ use proxmox_backup::api::router::*;
|
||||
|
||||
use serde_json::{Value};
|
||||
|
||||
use std::io::Read;
|
||||
use std::io::{Read, Write};
|
||||
use std::path::PathBuf;
|
||||
|
||||
use proxmox_backup::catar::format_definition::*;
|
||||
use proxmox_backup::catar::encoder::*;
|
||||
use proxmox_backup::catar::decoder::*;
|
||||
|
||||
use proxmox_backup::tools::*;
|
||||
@ -115,11 +116,26 @@ fn dump_archive(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
|
||||
Ok(Value::Null)
|
||||
}
|
||||
|
||||
fn create_backup(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
|
||||
fn create_archive(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
|
||||
|
||||
let _archive = required_string_param(¶m, "archive");
|
||||
let _source = required_string_param(¶m, "source");
|
||||
let archive = required_string_param(¶m, "archive");
|
||||
let source = required_string_param(¶m, "source");
|
||||
|
||||
let source = std::path::PathBuf::from(source);
|
||||
|
||||
let mut dir = nix::dir::Dir::open(
|
||||
&source, nix::fcntl::OFlag::O_NOFOLLOW, nix::sys::stat::Mode::empty())?;
|
||||
|
||||
let file = std::fs::OpenOptions::new()
|
||||
.create_new(true)
|
||||
.write(true)
|
||||
.open(archive)?;
|
||||
|
||||
let mut writer = std::io::BufWriter::with_capacity(1024*1024, file);
|
||||
|
||||
CaTarEncoder::encode(source, &mut dir, &mut writer)?;
|
||||
|
||||
writer.flush()?;
|
||||
|
||||
Ok(Value::Null)
|
||||
}
|
||||
@ -129,7 +145,7 @@ fn main() {
|
||||
let cmd_def = CliCommandMap::new()
|
||||
.insert("create", CliCommand::new(
|
||||
ApiMethod::new(
|
||||
create_backup,
|
||||
create_archive,
|
||||
ObjectSchema::new("Create new catar archive.")
|
||||
.required("archive", StringSchema::new("Archive name"))
|
||||
.required("source", StringSchema::new("Source directory."))
|
||||
|
Loading…
Reference in New Issue
Block a user