parent
791c61aa94
commit
5fa6d0b0ee
|
@ -7,5 +7,5 @@
|
||||||
users.defaultUserShell = pkgs.fish;
|
users.defaultUserShell = pkgs.fish;
|
||||||
|
|
||||||
environment.systemPackages =
|
environment.systemPackages =
|
||||||
[ inputs.agenix.packages.x86_64-linux.default pkgs.coreutils pkgs.fd ];
|
[ inputs.agenix.packages.x86_64-linux.default pkgs.coreutils ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,86 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
|
|
||||||
systemd = {
|
|
||||||
timers.backup-timer = {
|
|
||||||
wantedBy = [ "timers.target" ];
|
|
||||||
partOf = [ "backup-timer.service" ];
|
|
||||||
timerConfig.OnCalendar = "*-*-* 4:00:00";
|
|
||||||
};
|
|
||||||
services.backup-timer = {
|
|
||||||
serviceConfig.Type = "oneshot";
|
|
||||||
script = ''
|
|
||||||
BKG_DIR=/var/backup
|
|
||||||
|
|
||||||
EXCLUDE_APPS=("s3/")
|
|
||||||
EXCLUDE_VOLUMES=("wireguard_data")
|
|
||||||
EXCLUDE_CLEANUP=("s3/")
|
|
||||||
|
|
||||||
DAYS=7 # how many days should daily backups be stored
|
|
||||||
DF=daily # folder name for daily backups
|
|
||||||
WF=weekly # folder name for weekly backups
|
|
||||||
MF=monthly # folder name for monthly backups
|
|
||||||
|
|
||||||
MBD=22 # day of month for monthly backup
|
|
||||||
WBD=3 # weekday for weekly backups
|
|
||||||
PV=podman-volumes # folder name for podman volumes
|
|
||||||
|
|
||||||
cd $BKG_DIR
|
|
||||||
PODMAN_VOLUMES=$(podman volume ls --format '{{.Name}}')
|
|
||||||
# Podman volume backup
|
|
||||||
if [ ! -d $PV ]; then
|
|
||||||
mkdir $PV
|
|
||||||
fi
|
|
||||||
for vol in $PODMAN_VOLUMES; do
|
|
||||||
if [[ " $\{EXCLUDE_VOLUMES[@]} " =~ " $\{vol} " ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
cd $BKG_DIR/$PV
|
|
||||||
podman volume export $vol --output $vol.tar ; gzip $vol.tar
|
|
||||||
done
|
|
||||||
|
|
||||||
BACKUP_APPS=$(fd . -td -d 1 $BKG_DIR)
|
|
||||||
# App backup
|
|
||||||
for bkg in $BACKUP_APPS; do
|
|
||||||
if [[ " $\{EXCLUDE_APPS[@]} " =~ " $\{bkg} " ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
cd $bkg
|
|
||||||
#monthly
|
|
||||||
if [ ! -d $MF ]; then
|
|
||||||
mkdir $MF
|
|
||||||
fi
|
|
||||||
DOM=$(date +%d)
|
|
||||||
if [ $DOM -eq $MBD ]; then
|
|
||||||
fd . -tf -d 1 -x cp {/} $MF/$(date +"%Y%m")-{/}
|
|
||||||
fi
|
|
||||||
|
|
||||||
#weekly
|
|
||||||
if [ ! -d $WF ]; then
|
|
||||||
mkdir $WF
|
|
||||||
fi
|
|
||||||
DOW=$(date +%u)
|
|
||||||
if [ $DOW -eq $WBD ]; then
|
|
||||||
fd . -tf -d 1 -x cp {/} $WF/$(date +"%U%Y")-{/}
|
|
||||||
fi
|
|
||||||
|
|
||||||
#dailies
|
|
||||||
if [ ! -d $DF ]; then
|
|
||||||
mkdir $DF
|
|
||||||
fi
|
|
||||||
fd . -tf -d 1 -x mv {/} $DF/$(date +"%Y%m%d")-{/}
|
|
||||||
done
|
|
||||||
|
|
||||||
# Delete old backups
|
|
||||||
for bkg in $BACKUP_APPS; do
|
|
||||||
if [[ " $\{EXCLUDE_CLEANUP[@]} " =~ " $\{bkg} " ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
fd . $bkg"daily" --changed-before "$DAYS days" -x rm
|
|
||||||
fd . $bkg"weekly" --changed-before "4 weeks" -x rm
|
|
||||||
fd . $bkg"monthly" --changed-before "8 weeks" -x rm
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,6 +1,5 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./backup.nix
|
|
||||||
./container.nix
|
./container.nix
|
||||||
./gitea.nix
|
./gitea.nix
|
||||||
./invidious.nix
|
./invidious.nix
|
||||||
|
|
Loading…
Reference in New Issue