add simple rsnapshot module
This commit is contained in:
parent
56e5b35f2e
commit
cd98acd3a7
2 changed files with 57 additions and 0 deletions
|
@ -75,6 +75,7 @@
|
|||
./services/backup/mysql-backup.nix
|
||||
./services/backup/postgresql-backup.nix
|
||||
./services/backup/sitecopy-backup.nix
|
||||
./services/backup/rsnapshot.nix
|
||||
./services/databases/4store-endpoint.nix
|
||||
./services/databases/4store.nix
|
||||
./services/databases/firebird.nix
|
||||
|
|
56
modules/services/backup/rsnapshot.nix
Normal file
56
modules/services/backup/rsnapshot.nix
Normal file
|
@ -0,0 +1,56 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
|
||||
let cfg = config.services.rsnapshot;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.rsnapshot = {
|
||||
enable = mkEnableOption "rsnapshot backups";
|
||||
|
||||
configuration = mkOption {
|
||||
default = "";
|
||||
example = ''
|
||||
retain hourly 24
|
||||
retain daily 365
|
||||
backup /home/ localhost/
|
||||
'';
|
||||
type = types.lines;
|
||||
description = ''
|
||||
rsnapshot configuration option in addition to the defaults from rsnapshot and this module.
|
||||
'';
|
||||
};
|
||||
|
||||
cronIntervals = mkOption {
|
||||
default = {};
|
||||
example = { "hourly" = "0 * * * *"; "daily" = "50 21 * * *"; };
|
||||
type = types.attrsOf types.string;
|
||||
description = ''
|
||||
Periodicity at which intervals should be run by cron.
|
||||
Note that the intervals also have to exist in configuration
|
||||
as retain options.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = [ pkgs.rsnapshot ];
|
||||
|
||||
services.cron.systemCronJobs =
|
||||
mapAttrsToList (interval: time: "${time} root ${pkgs.rsnapshot}/bin/rsnapshot ${interval}") cfg.cronIntervals;
|
||||
|
||||
environment.etc."rsnapshot.conf".source = with pkgs; writeText "gen-rsnapshot.conf" (''
|
||||
config_version 1.2
|
||||
cmd_cp ${coreutils}/bin/cp
|
||||
cmd_rsync ${rsync}/bin/rsync
|
||||
cmd_ssh ${openssh}/bin/ssh
|
||||
cmd_logger ${inetutils}/bin/logger
|
||||
cmd_du ${coreutils}/bin/du
|
||||
cmd_rsnapshot_diff ${rsnapshot}/bin/rsnapshot-diff
|
||||
lockfile /run/rsnapshot.pid
|
||||
|
||||
'' + cfg.configuration);
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue