#!/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: "backups@azul: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] { logStartJob $job.statusSlug syncoid --no-sync-snap --create-bookmark --no-privilege-elevation --recursive $job.source $job.target 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 logStartJob $job.statusSlug sudo kopia --config-file=($job.target) snapshot create ($job.source) logFinishedJob $job.statusSlug } def logStartJob [slug] { print $"starting job: ($slug)" print $"($statusHost)/ping/($pingKey)/($slug)/start" curl -s $"($statusHost)/ping/($pingKey)/($slug)/start" | save -f /dev/null } def logFinishedJob [slug] { print $"finished job: ($slug)" curl -s $"($statusHost)/ping/($pingKey)/($slug)" | save -f /dev/null } def "main list" [] { print "Known jobs:" print $"($jobs | get statusSlug | to text)" } def main [statusSlug] { let matches = $jobs | where statusSlug == $statusSlug if ($matches | length) == 1 { backup ($matches | first) } else { print $"Did not find exactly one match for ($statusSlug)" exit 1 } } #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