Files
home-tools/backups/monitored-backup

97 lines
4.8 KiB
Plaintext
Executable File

#!/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