Merge pull request #14 from rustic-rs/change-status-special-files

backup: Add changed status for special files
This commit is contained in:
aawsome 2022-06-12 22:55:39 +02:00 committed by GitHub
commit fb6f2794f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -64,6 +64,21 @@ impl<BE: DecryptWriteBackend, I: IndexedBackend> Archiver<BE, I> {
}
pub fn add_file(&mut self, node: Node, size: u64) {
let filename = self.path.join(node.name());
match self.parent.is_parent(&node) {
ParentResult::Matched(_) => {
v2!("unchanged file: {:?}", filename);
self.summary.files_unmodified += 1;
}
ParentResult::NotMatched => {
v2!("changed file: {:?}", filename);
self.summary.files_changed += 1;
}
ParentResult::NotFound => {
v2!("new file: {:?}", filename);
self.summary.files_new += 1;
}
}
self.tree.add(node);
self.summary.total_files_processed += 1;
self.summary.total_bytes_processed += size;
@ -176,32 +191,19 @@ impl<BE: DecryptWriteBackend, I: IndexedBackend> Archiver<BE, I> {
}
pub async fn backup_file(&mut self, path: &Path, node: Node, p: ProgressBar) -> Result<()> {
let filename = self.path.join(node.name());
match self.parent.is_parent(&node) {
ParentResult::Matched(p_node) => {
v2!("unchanged file: {:?}", filename);
self.summary.files_unmodified += 1;
if p_node.content().iter().all(|id| self.index.has_data(id)) {
let size = *p_node.meta().size();
let mut node = node;
node.set_content(p_node.content().to_vec());
self.add_file(node, size);
p.inc(size);
return Ok(());
} else {
ve1!(
"missing blobs in index for unchanged file {:?}; re-reading file",
self.path.join(node.name())
);
}
}
ParentResult::NotMatched => {
v2!("changed file: {:?}", filename);
self.summary.files_changed += 1;
}
ParentResult::NotFound => {
v2!("new file: {:?}", filename);
self.summary.files_new += 1;
if let ParentResult::Matched(p_node) = self.parent.is_parent(&node) {
if p_node.content().iter().all(|id| self.index.has_data(id)) {
let size = *p_node.meta().size();
let mut node = node;
node.set_content(p_node.content().to_vec());
self.add_file(node, size);
p.inc(size);
return Ok(());
} else {
ve1!(
"missing blobs in index for unchanged file {:?}; re-reading file",
self.path.join(node.name())
);
}
}
let f = File::open(path)?;