made borg work with lvm
This commit is contained in:
parent
9515c6087b
commit
5ac5c11823
2 changed files with 34 additions and 5 deletions
|
|
@ -1,6 +1,7 @@
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
let
|
let
|
||||||
backuppath = "/backup/snapshot";
|
backuppath = "/backup/snapshot";
|
||||||
|
borgHook = toString ./borgHook.sh;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
services.borgbackup.jobs.default = {
|
services.borgbackup.jobs.default = {
|
||||||
|
|
@ -27,11 +28,8 @@ in
|
||||||
environment.BORG_RSH = "ssh -o 'StrictHostKeyChecking=no' -i /root/.ssh/id_borg";
|
environment.BORG_RSH = "ssh -o 'StrictHostKeyChecking=no' -i /root/.ssh/id_borg";
|
||||||
extraCreateArgs = "--verbose --stats";
|
extraCreateArgs = "--verbose --stats";
|
||||||
startAt = "00:10";
|
startAt = "00:10";
|
||||||
preHook = ''if [[ -d ${backuppath} ]]; then
|
preHook = "${borgHook} pre ${backuppath}"; #create snapshot for consistent filesystem
|
||||||
btrfs subvolume delete ${backuppath}
|
postCreate = "${borgHook} post ${backuppath}"; #delete snapshot again
|
||||||
fi
|
|
||||||
btrfs subvolume snapshot / ${backuppath}''; #create snapshot for consistent filesystem
|
|
||||||
postCreate = "btrfs subvolume delete ${backuppath}"; #delete snapshot again
|
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.borgbackup-job-default = {
|
systemd.services.borgbackup-job-default = {
|
||||||
|
|
|
||||||
31
modules/borgHook.sh
Executable file
31
modules/borgHook.sh
Executable file
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/run/current-system/sw/bin/bash
|
||||||
|
hooktype="$1"
|
||||||
|
backuppath="$2"
|
||||||
|
fstype="$(df --output=fstype / | sed 1d)"
|
||||||
|
function dellvm {
|
||||||
|
umount ${backuppath}
|
||||||
|
lvremove -y "$1"
|
||||||
|
}
|
||||||
|
function delbtrfs {
|
||||||
|
btrfs subvolume delete ${backuppath}
|
||||||
|
}
|
||||||
|
if [[ "$fstype" == "btrfs" ]]; then
|
||||||
|
if [[ -d ${backuppath} ]]; then
|
||||||
|
delbtrfs
|
||||||
|
fi
|
||||||
|
if [[ "$hooktype" == "pre" ]]; then
|
||||||
|
btrfs subvolume snapshot / ${backuppath}
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
snapname=nixos_snap
|
||||||
|
volume_group="$(mount | grep 'on / ' | cut -f 1 -d' ')"
|
||||||
|
vgname="$(lvs --noheadings "$volume_group" -o vg_name | tr -d ' ')"
|
||||||
|
snappath="/dev/mapper/${vgname}-${snapname}"
|
||||||
|
if [[ -b "$snappath" ]]; then
|
||||||
|
dellvm "$snappath"
|
||||||
|
fi
|
||||||
|
if [[ "$hooktype" == "pre" ]]; then
|
||||||
|
lvcreate -l50%FREE -s -n "$snapname" "$volume_group"
|
||||||
|
mount "$snappath" -o ro /backup/snapshot
|
||||||
|
fi
|
||||||
|
fi
|
||||||
Loading…
Add table
Reference in a new issue