snapshots
This commit is contained in:
parent
738c7ed504
commit
7238164677
5 changed files with 297 additions and 4 deletions
|
@ -45,10 +45,17 @@ pub fn run_backup_rsync(conf: &RsyncConfig) {
|
|||
}
|
||||
}
|
||||
|
||||
cmd.push(&conf.src);
|
||||
cmd.push(&conf.dest);
|
||||
|
||||
run_command(&cmd);
|
||||
if conf.cephfs_snap.unwrap_or_default() {
|
||||
let (snap_dir, snap_name) = cephfs_snap_create(&conf.src);
|
||||
cmd.push(&snap_dir);
|
||||
cmd.push(&conf.dest);
|
||||
run_command(&cmd);
|
||||
cephfs_snap_remove(&conf.src, &snap_name);
|
||||
} else {
|
||||
cmd.push(&conf.src);
|
||||
cmd.push(&conf.dest);
|
||||
run_command(&cmd);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn run_backup(conf: Config) {
|
||||
|
@ -68,3 +75,28 @@ pub fn run_backup(conf: Config) {
|
|||
run_command(&["sh", script.as_str()]);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn cephfs_snap_create(dir: &str) -> (String, String) {
|
||||
let path = std::path::Path::new(dir);
|
||||
let now = chrono::Utc::now().format("%Y_%m_%d").to_string();
|
||||
let snap_name = format!("SNAP_{now}");
|
||||
let snap_dir = path.join(".snap").join(&snap_name);
|
||||
|
||||
println!("--> Creating snapshot {} on {}", snap_name, dir);
|
||||
if std::fs::create_dir(&snap_dir).is_err() {
|
||||
if !std::fs::exists(&snap_dir).unwrap() {
|
||||
println!("{} Could not create snapshot", "Error:".paint(Color::Red));
|
||||
std::process::exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
(snap_dir.to_str().unwrap().to_string(), snap_name)
|
||||
}
|
||||
|
||||
pub fn cephfs_snap_remove(dir: &str, snap: &str) {
|
||||
let path = std::path::Path::new(dir);
|
||||
let snap_dir = path.join(".snap").join(snap);
|
||||
|
||||
println!("--> Removing snapshot {} on {}", snap, dir);
|
||||
std::fs::remove_dir(snap_dir).unwrap()
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ pub struct RsyncConfig {
|
|||
pub exclude: Option<Vec<String>>,
|
||||
pub delete: Option<bool>,
|
||||
pub ensure_exists: Option<String>,
|
||||
pub cephfs_snap: Option<bool>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue