feat(desktop): local restic backup.
This commit is contained in:
parent
33f606aebf
commit
64a1ecc15e
6 changed files with 144 additions and 71 deletions
|
@ -14,79 +14,105 @@
|
|||
restic
|
||||
];
|
||||
|
||||
# Restic home manager service
|
||||
services.restic = {
|
||||
enable = true;
|
||||
backups = {
|
||||
local = {
|
||||
initialize = true;
|
||||
passwordFile = "/run/user/1000/agenix/restic-local-pass";
|
||||
paths = [
|
||||
"/home/crony/.face"
|
||||
"/home/crony/.librewolf"
|
||||
"/home/crony/.ssh"
|
||||
"/home/crony/.config/heroic"
|
||||
"/home/crony/.config/nbfc.json"
|
||||
"/home/crony/.config/OpenTabletDriver"
|
||||
"/home/crony/.config/tridactyl"
|
||||
"/home/crony/.local/share/gnupg"
|
||||
"/home/crony/.local/share/osu"
|
||||
"/home/crony/docs/sync"
|
||||
"/home/crony/docs/wireguard-keys"
|
||||
"/home/crony/pics"
|
||||
];
|
||||
repository = "/home/crony/.local/backup";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
##-- Restic Timers And Services --##
|
||||
|
||||
# Restic backup
|
||||
systemd.user.services = {
|
||||
restic_backup = {
|
||||
Unit.Description = "Restic backup service";
|
||||
Service = {
|
||||
Type = "oneshot";
|
||||
ExecStart = toString (pkgs.writeShellScript "restic-backup" ''
|
||||
. /etc/restic/local
|
||||
restic backup --files-from /home/crony/.config/restic/list --verbose && restic forget --keep-last 10 --keep-daily 7 --keep-weekly 5 --keep-monthly 12
|
||||
. /etc/restic/online
|
||||
restic backup --files-from /home/crony/.config/restic/list --verbose && restic forget --keep-last 10 --keep-daily 7 --keep-weekly 5 --keep-monthly 12
|
||||
rsync -avP --delete "$HOME/.local/backup/" "$HOME/Documents/Share/backup"
|
||||
'');
|
||||
};
|
||||
};
|
||||
};
|
||||
systemd.user.timers = {
|
||||
restic_backup = {
|
||||
Unit.Description = "Restic backup timer";
|
||||
Timer = {
|
||||
OnBootSec = "5m";
|
||||
OnUnitActiveSec = "6h";
|
||||
};
|
||||
Install.WantedBy = ["timers.target"];
|
||||
};
|
||||
};
|
||||
|
||||
# Restic check
|
||||
systemd.user.services = {
|
||||
restic_check = {
|
||||
Unit.Description = "Restic check service";
|
||||
Service = {
|
||||
Type = "oneshot";
|
||||
ExecStart = toString (pkgs.writeShellScript "restic-check" ''
|
||||
. /etc/restic/local
|
||||
restic check --read-data-subset=10%
|
||||
. /etc/restic/online
|
||||
restic check --read-data-subset=10%
|
||||
'');
|
||||
};
|
||||
};
|
||||
};
|
||||
systemd.user.timers = {
|
||||
restic_check = {
|
||||
Unit.Description = "Restic check timer";
|
||||
Timer = {OnCalendar = "Thu *-*-* 18:00:00";};
|
||||
Install.WantedBy = ["timers.target"];
|
||||
};
|
||||
};
|
||||
|
||||
# Restic prune
|
||||
systemd.user.services = {
|
||||
restic_prune = {
|
||||
Unit.Description = "Restic prune service";
|
||||
Service = {
|
||||
Type = "oneshot";
|
||||
ExecStart = toString (pkgs.writeShellScript "restic-prune" ''
|
||||
. /etc/restic/local
|
||||
restic prune
|
||||
. /etc/restic/online
|
||||
restic prune
|
||||
'');
|
||||
};
|
||||
};
|
||||
};
|
||||
systemd.user.timers = {
|
||||
restic_prune = {
|
||||
Unit.Description = "Restic prune timer";
|
||||
Timer = {OnCalendar = "Fri *-*-* 18:00:00";};
|
||||
Install.WantedBy = ["timers.target"];
|
||||
};
|
||||
};
|
||||
# systemd.user.services = {
|
||||
# restic_backup = {
|
||||
# Unit.Description = "Restic backup service";
|
||||
# Service = {
|
||||
# Type = "oneshot";
|
||||
# ExecStart = toString (pkgs.writeShellScript "restic-backup" ''
|
||||
# . /etc/restic/local
|
||||
# restic backup --files-from /home/crony/.config/restic/list --verbose && restic forget --keep-last 10 --keep-daily 7 --keep-weekly 5 --keep-monthly 12
|
||||
# . /etc/restic/online
|
||||
# restic backup --files-from /home/crony/.config/restic/list --verbose && restic forget --keep-last 10 --keep-daily 7 --keep-weekly 5 --keep-monthly 12
|
||||
# rsync -avP --delete "$HOME/.local/backup/" "$HOME/Documents/Share/backup"
|
||||
# '');
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# systemd.user.timers = {
|
||||
# restic_backup = {
|
||||
# Unit.Description = "Restic backup timer";
|
||||
# Timer = {
|
||||
# OnBootSec = "5m";
|
||||
# OnUnitActiveSec = "6h";
|
||||
# };
|
||||
# Install.WantedBy = ["timers.target"];
|
||||
# };
|
||||
# };
|
||||
#
|
||||
# # Restic check
|
||||
# systemd.user.services = {
|
||||
# restic_check = {
|
||||
# Unit.Description = "Restic check service";
|
||||
# Service = {
|
||||
# Type = "oneshot";
|
||||
# ExecStart = toString (pkgs.writeShellScript "restic-check" ''
|
||||
# . /etc/restic/local
|
||||
# restic check --read-data-subset=10%
|
||||
# . /etc/restic/online
|
||||
# restic check --read-data-subset=10%
|
||||
# '');
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# systemd.user.timers = {
|
||||
# restic_check = {
|
||||
# Unit.Description = "Restic check timer";
|
||||
# Timer = {OnCalendar = "Thu *-*-* 18:00:00";};
|
||||
# Install.WantedBy = ["timers.target"];
|
||||
# };
|
||||
# };
|
||||
#
|
||||
# # Restic prune
|
||||
# systemd.user.services = {
|
||||
# restic_prune = {
|
||||
# Unit.Description = "Restic prune service";
|
||||
# Service = {
|
||||
# Type = "oneshot";
|
||||
# ExecStart = toString (pkgs.writeShellScript "restic-prune" ''
|
||||
# . /etc/restic/local
|
||||
# restic prune
|
||||
# . /etc/restic/online
|
||||
# restic prune
|
||||
# '');
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# systemd.user.timers = {
|
||||
# restic_prune = {
|
||||
# Unit.Description = "Restic prune timer";
|
||||
# Timer = {OnCalendar = "Fri *-*-* 18:00:00";};
|
||||
# Install.WantedBy = ["timers.target"];
|
||||
# };
|
||||
# };
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue