diff --git a/backups/monitored-backup b/backups/monitored-backup index e69de29..c132c46 100644 --- a/backups/monitored-backup +++ b/backups/monitored-backup @@ -0,0 +1,96 @@ +#!/usr/bin/nu + +# slug pattern: +# {thing}-{location}-{kopia|zfs} + +let b2Repo = "/home/jbrechtel/kopia/leonard-brechtel-backup/repository.config" +let statusHost = "https://status.roo.lol" +let pingKey = "pRybo-Yjebna0KHQCYCpTg" + +let jobs = [{ statusSlug: "photos-content-b2-kopia", type: "kopia", source: "/nas1/photos.roo.lol", target: $b2Repo, } + ,{ statusSlug: "photos-service-b2-kopia", type: "kopia", source: "/services/photos.roo.lol", target: $b2Repo, } + ,{ statusSlug: "network-fileshare-b2-kopia", type: "kopia", source: "/nas/files", target: $b2Repo, } + ,{ statusSlug: "vaultwarden-b2-kopia", type: "kopia", source: "/services/passwords.roo.lol", target: $b2Repo, } + ,{ statusSlug: "zendo-home-azul-zfs", type: "zfs", source: "backups@zendo.brechtel:rpool/home", target: "dune/backups/zendo/home"} + ] + +def backup [job] { + if job.type == "kopia" { + kopiaBackup job + } else if job.type == "zfs" { + zfsBackup job + } else { + print $ "Invalid job type: " + job.type + } +} + +def zfsBackup [job] { + let cmdStart = "zfs --no-sync-snap --create-bookmark --no-privilege-elevation --recursive" + let cmd = $"($cmdStart) ($job.source) ($job.target)" + logStartJob $job.statusSlug + print $"running command: ($cmd)" + logFinishedJob $job.statusSlug +} + +def kopiaBackup [job] { + #using sudo is annoying but since this is backing up docker containers + #the permissions are often wrong. I should be using podman + rootless + let cmd = $"sudo kopia --config-file=($job.target) snapshot create ($job.source)" + logStartJob $job.statusSlug + print $"running command: ($cmd)" + logFinishedJob $job.statusSlug +} + +def logStartJob [slug] { + print $"starting job: ($slug)" + curl -s $"($statusHost)/ping/($pingKey)/($slug)/start" +} + +def logFinishedJob [slug] { + print $"finished job: ($slug)" + curl -s $"($statusHost)/ping/($pingKey)/($slug)" +} + +def main [jobName] { + let job = $jobs | where name == $jobName +} + +#sudo kopia --config-file=/home/jbrechtel/kopia/leonard-brechtel-backup/repository.config snapshot create /nas1/photos.roo.lol +#sudo kopia --config-file=/home/jbrechtel/kopia/leonard-brechtel-backup/repository.config snapshot create /services/photos.roo.lol +#sudo kopia --config-file=/home/jbrechtel/kopia/leonard-brechtel-backup/repository.config snapshot create /nas/files +#sudo kopia --config-file=/home/jbrechtel/kopia/leonard-brechtel-backup/repository.config snapshot create /services/passwords.roo.lol +#sudo kopia --config-file=/home/jbrechtel/kopia/leonard-brechtel-backup/repository.config snapshot create /services/paperless.roo.lol +#sudo kopia --config-file=/home/jbrechtel/kopia/leonard-brechtel-backup/repository.config snapshot create /services/caddy +#sudo kopia --config-file=/home/jbrechtel/kopia/leonard-brechtel-backup/repository.config snapshot create /services/kitchen.roo.lol +#sudo kopia --config-file=/home/jbrechtel/kopia/leonard-brechtel-backup/repository.config snapshot create /services/ha.roo.lol/config/backups +# +# +#echo "Backing up zendo.brechtel:rpool/home" +#zfs --no-sync-snap --create-bookmark --no-privilege-elevation --recursive backups@zendo.brechtel:rpool/home dune/backups/zendo/home +# +#echo "Backing up zendo.brechtel:rpool/work/flipstone" +#zfs --no-sync-snap --create-bookmark --no-privilege-elevation --recursive backups@zendo.brechtel:rpool/work/flipstone dune/backups/zendo/flipstone +# +#echo "Backing up zendo.brechtel:rpool/ROOT/archlinux" +#zfs --no-sync-snap --create-bookmark --no-privilege-elevation --recursive backups@zendo.brechtel:rpool/root dune/backups/zendo/root +# +##echo "Backing up splendor.brechtel:zpcachyos/ROOT/cos/home" +##zfs --no-sync-snap --create-bookmark --no-privilege-elevation --recursive backups@splendor.brechtel:zpcachyos/ROOT/cos/home dune/backups/splendor/home +# +##echo "Backing up splendor.brechtel:zpcachyos/ROOT" +##zfs --no-sync-snap --create-bookmark --no-privilege-elevation --recursive backups@splendor.brechtel:zpcachyos/ROOT/cos/root dune/backups/splendor/root +# +#echo "Backing up pandemic:primary/services" +#zfs --no-sync-snap --skip-parent --create-bookmark --no-privilege-elevation --recursive backups@pandemic.brechtel:primary/services dune/backups/pandemic/services +# +#echo "Backing up nas1/photos.roo.lol" +#zfs --no-sync-snap --create-bookmark --no-privilege-elevation --recursive backups@pandemic:nas1/photos.roo.lol dune/backups/photos.roo.lol +# +#echo "Backing up nas1/maggie" +#zfs --no-sync-snap --create-bookmark --no-privilege-elevation --recursive backups@pandemic:nas1/maggie dune/backups/files/maggie +# +#echo "Backing up nas1/maggie-kopia" +#zfs --no-sync-snap --create-bookmark --no-privilege-elevation --recursive backups@pandemic:nas1/maggie-kopia dune/backups/maggie-kopia +# +#echo "Backing up nas1/files" +#zfs --no-sync-snap --create-bookmark --no-privilege-elevation --recursive backups@pandemic:nas1/files dune/backups/files