From 6cee9ab06c1ce14af014f6f56dd2f991984d6d71 Mon Sep 17 00:00:00 2001 From: mc-fucker Date: Sun, 29 Jan 2023 08:46:21 +0100 Subject: [PATCH] made borg use btrfs snapshot --- modules/borg.nix | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/modules/borg.nix b/modules/borg.nix index 2aff7a7..84be93d 100644 --- a/modules/borg.nix +++ b/modules/borg.nix @@ -1,20 +1,23 @@ -{ config, ... }: +{ config, pkgs, ... }: +let + backuppath = "/backup/snapshot"; +in { services.borgbackup.jobs.default = { paths = [ - "/etc" - "/home" - "/root" - "/var" + "${backuppath}/etc" + "${backuppath}/home" + "${backuppath}/root" + "${backuppath}/var" ]; exclude = [ - "*/.cache" - "/home/*/build" - "/var/log" - "/var/lib/nextcloud/data/appdata_ocnc33s4dl6i/preview" - "/var/lib/postgresql/*/" - "/var/lib/containers" - "/var/lib/rancher/k3s/agent/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots" + "${backuppath}*/.cache" + "${backuppath}/home/*/build" + "${backuppath}/var/log" + "${backuppath}/var/lib/nextcloud/data/appdata_ocnc33s4dl6i/preview" + "${backuppath}/var/lib/postgresql/*/" + "${backuppath}/var/lib/containers" + "${backuppath}/var/lib/rancher/k3s/agent/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots" ]; repo = "borg@haus.mc-fucker.cool:/mnt/sdf1/borg/${config.networking.hostName}"; compression = "zstd"; @@ -22,6 +25,18 @@ environment.BORG_RSH = "ssh -o 'StrictHostKeyChecking=no' -i /root/.ssh/id_borg"; extraCreateArgs = "--verbose --stats"; startAt = "03:00"; + preHook = ''if [[ -d ${backuppath} ]]; then + btrfs subvolume delete ${backuppath} + fi + btrfs subvolume snapshot / ${backuppath}''; #create snapshot for consistent filesystem + postCreate = "btrfs subvolume delete ${backuppath}"; #delete snapshot again + }; + + systemd.services.borgbackup-job-default = { + path = [ pkgs.btrfs-progs ]; + serviceConfig = { + ReadWritePaths = [ "/backup" ]; + }; }; }