From 08bda26c42119003ac6d7caae1b3e30bf5d32213 Mon Sep 17 00:00:00 2001 From: JMARyA Date: Thu, 23 Jan 2025 00:26:45 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=91=EF=B8=8F=20fix=20path?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/borg.rs | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/borg.rs b/src/borg.rs index af16e1d..00605f5 100644 --- a/src/borg.rs +++ b/src/borg.rs @@ -93,30 +93,37 @@ pub fn create_archive(conf: &BorgConfig) { if conf.cephfs_snap.unwrap_or_default() { for path in &conf.src { let snap = cephfs_snap_create(&path); - snaps.push(snap); + snaps.push((snap.0, snap.1, path)); } } let mut dirs = if snaps.is_empty() { - conf.src.clone() + conf.src + .clone() + .into_iter() + .map(|x| (x.clone(), x)) + .collect() } else { - snaps.iter().map(|x| x.0.clone()).collect::>() + snaps + .iter() + .map(|x| (x.0.clone(), x.2.clone())) + .collect::>() }; let mut mounts = Vec::new(); if conf.same_path.unwrap_or_default() { - for path in &dirs { - let name = path.replace("/", "_"); + for (path, orig) in &dirs { + let name = orig.replace("/", "_"); println!("--> Creating consistent path /bk/{}", name); std::fs::create_dir_all(&format!("/bk/{name}")).unwrap(); bind_mount(path, &format!("/bk/{name}")); - mounts.push(format!["/bk/{name}"]); + mounts.push((format!("/bk/{name}"), path.clone())); } dirs = mounts.clone(); } - cmd.extend(dirs.iter().map(|x| x.as_str())); + cmd.extend(dirs.iter().map(|x| x.0.as_str())); run_command(&cmd, conf.passphrase.clone()); @@ -125,7 +132,7 @@ pub fn create_archive(conf: &BorgConfig) { println!("--> Cleaning up snap {}", cleanup.0); } - for cleanup in &mounts { + for (cleanup, _) in &mounts { println!("--> Cleaning up mount {}", cleanup); umount(&cleanup); }