path.push(full_archive_name);
- let index = datastore.create_archive_writer(path, chunk_size).unwrap();
+ let index = datastore.create_archive_writer(path, chunk_size)?;
let upload = UploadCaTar { stream: req_body, index, count: 0};
fn download_catar(parts: Parts, req_body: Body, param: Value, _info: &ApiAsyncMethod) -> Result<BoxFut, Error> {
+ let store = tools::required_string_param(¶m, "store")?;
+ let archive_name = tools::required_string_param(¶m, "archive_name")?;
+
+ let backup_type = tools::required_string_param(¶m, "type")?;
+ let backup_id = tools::required_string_param(¶m, "id")?;
+ let backup_time = tools::required_integer_param(¶m, "time")?;
+
+ println!("Download {}.catar from {} ({}/{}/{}/{}.aidx)", archive_name, store,
+ backup_type, backup_id, backup_time, archive_name);
+
+ let datastore = DataStore::lookup_datastore(store)?;
+
+ let mut path = datastore.get_backup_dir(backup_type, backup_id, backup_time);
+
+ let mut full_archive_name = PathBuf::from(archive_name);
+ full_archive_name.set_extension("aidx");
+
+ path.push(full_archive_name);
+
+ let index = datastore.open_archive_reader(path)?;
+
bail!("not implemeneted");
}
self.chunk_store.base_path()
}
+ pub fn get_backup_dir(
+ &self,
+ backup_type: &str,
+ backup_id: &str,
+ backup_time: i64,
+ ) -> PathBuf {
+
+ let mut relative_path = PathBuf::new();
+
+ relative_path.push(backup_type);
+
+ relative_path.push(backup_id);
+
+ let dt = Utc.timestamp(backup_time, 0);
+ let date_str = dt.format("%Y-%m-%dT%H:%M:%S").to_string();
+
+ relative_path.push(&date_str);
+
+ relative_path
+ }
+
pub fn create_backup_dir(
&self,
backup_type: &str,