zfs autosnapshots

This commit is contained in:
2026-06-20 20:34:41 -05:00
parent ab2f0a6e6a
commit 779a6c4f41
5 changed files with 19 additions and 7 deletions
@@ -4,15 +4,17 @@
lib, lib,
... ...
}: let }: let
service = "holocron_offsite"; service = "offsite";
cfg = config.holocron.${service}; cfg = config.holocron.${service};
sec = config.sops.secrets;
in { in {
options.holocron.ensure_perms = { options.holocron.offsite = {
enable = lib.mkEnableOption "enables backup script for holocron fileshare"; enable = lib.mkEnableOption "enables backup script for holocron fileshare";
paths = lib.mkOption { paths = lib.mkOption {
type = with lib.types; listOf str; type = with lib.types; listOf str;
default = [ default = [
"/holocron/srv" "/holocron/srv"
"/holocron/users"
]; ];
description = "list of paths to backup"; description = "list of paths to backup";
}; };
@@ -39,12 +41,14 @@ in {
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";
User = "root";
Group = "archives";
}; };
script = '' script = ''
${pkgs.sshpass}/bin/sshpass -f ${sec."lifeboat_rsync".path} \ ${pkgs.sshpass}/bin/sshpass -f ${sec."lifeboat_rsync".path} \
${pkgs.rsync}/bin/rsync -aHAX --partial --numeric-ids --info=progress2,name1,stats2 --delete \ ${pkgs.rsync}/bin/rsync -aHAX --partial --numeric-ids --info=progress2,name1,stats2 --delete \
-e "ssh -o StrictHostKeyChecking=no" \ -e "${pkgs.openssh}/bin/ssh -o StrictHostKeyChecking=no" \
${builtins.concatStringsSep " " cfg.paths} \ ${builtins.concatStringsSep " " cfg.paths} \
${cfg.offsite_user}@${cfg.offsite_target}::${cfg.offsite_dir} ${cfg.offsite_user}@${cfg.offsite_target}::${cfg.offsite_dir}
''; '';
@@ -27,7 +27,7 @@ in {
cert = sec."${service}/lumiose/cert".path; cert = sec."${service}/lumiose/cert".path;
settings = { settings = {
devices = { devices = {
"mudkip" = {id = "OV4NUQK-3YHRL5R-SIZGTNL-7VZFFUX-FOJ6NTS-C7ROXR7-I2Q2W7G-QERO7AO";}; "piplup" = {id = "OV4NUQK-3YHRL5R-SIZGTNL-7VZFFUX-FOJ6NTS-C7ROXR7-I2Q2W7G-QERO7AO";};
"zygarde" = {id = "UYLTF52-VVKUR7F-JN33HQZ-RFNWGL3-JER52LA-GZD2LPJ-QIFEE7K-MNMZRQ5";}; "zygarde" = {id = "UYLTF52-VVKUR7F-JN33HQZ-RFNWGL3-JER52LA-GZD2LPJ-QIFEE7K-MNMZRQ5";};
"yveltal" = {id = "ZVSQ4WJ-7OICYOZ-3ECES4X-KH37IPB-TKHKUJG-BSEGXVM-AHYY5C3-VKG44AX";}; "yveltal" = {id = "ZVSQ4WJ-7OICYOZ-3ECES4X-KH37IPB-TKHKUJG-BSEGXVM-AHYY5C3-VKG44AX";};
"CEN-IT-07" = {id = "DPYKA4Z-3PX7JB2-FBEOXXX-SC7TLT2-QC5P2IR-SXOPJGX-QO3DMII-5B7UCA4";}; "CEN-IT-07" = {id = "DPYKA4Z-3PX7JB2-FBEOXXX-SC7TLT2-QC5P2IR-SXOPJGX-QO3DMII-5B7UCA4";};
@@ -36,7 +36,7 @@ in {
folders = { folders = {
"holocron" = { "holocron" = {
path = "/holocron/users/blake/holocron"; path = "/holocron/users/blake/holocron";
devices = ["mudkip" "zygarde" "CEN-IT-07" "CEN-IT-00007" "yveltal"]; devices = ["piplup" "zygarde" "CEN-IT-07" "CEN-IT-00007" "yveltal"];
id = "5voxg-c3he2"; id = "5voxg-c3he2";
versioning = { versioning = {
type = "staggered"; type = "staggered";
@@ -47,6 +47,14 @@ in {
services.zfs = { services.zfs = {
autoScrub.enable = true; autoScrub.enable = true;
autoScrub.interval = "weekly"; autoScrub.interval = "weekly";
autoSnapshot = {
enable = true;
frequent = 4; # 15 min snapshots
hourly = 24; # hourly snapshots
daily = 7; # daily snapshots
weekly = 4; # weekly snapshots
monthly = 12; # monthly snapshots
};
# email notifs # email notifs
zed = { zed = {
enableMail = true; enableMail = true;
@@ -70,7 +70,7 @@ in {
}; };
offsite_dir = lib.mkOption { offsite_dir = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = "lifeboat/archives/gameservers"; default = "lifeboat/holocron/archives/gameservers";
description = "path to rsync offsite backups to"; description = "path to rsync offsite backups to";
}; };
}; };
+1 -1
View File
@@ -43,7 +43,7 @@ in {
}; };
offsite_dir = lib.mkOption { offsite_dir = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = "lifeboat/archives"; default = "lifeboat/holocron/archives";
description = "path to rsync offsite backups to"; description = "path to rsync offsite backups to";
}; };
}; };