feat: add nextcloud auto backup
This commit is contained in:
parent
6f6f5fb4b0
commit
1e9417785d
2 changed files with 69 additions and 0 deletions
|
|
@ -1,6 +1,23 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
fileSystems."/mnt/backup_dn" = {
|
||||
device = "/dev/disk/by-uuid/FBD9-F625";
|
||||
fsType = "exfat";
|
||||
options = [
|
||||
"x-systemd.automount"
|
||||
"noauto"
|
||||
"x-systemd.idle-timeout=600"
|
||||
"nofail"
|
||||
"user"
|
||||
"x-gvfs-show"
|
||||
"gid=1000"
|
||||
"uid=1000"
|
||||
"dmask=000"
|
||||
"fmask=000"
|
||||
];
|
||||
};
|
||||
|
||||
boot.kernelPackages = pkgs.linuxPackages;
|
||||
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
|
|
|
|||
|
|
@ -96,4 +96,56 @@
|
|||
environment.systemPackages = with pkgs; [
|
||||
exiftool
|
||||
];
|
||||
|
||||
systemd.timers."nextcloud-backup" = {
|
||||
enable = true;
|
||||
description = "Nextcloud backup";
|
||||
timerConfig = {
|
||||
OnCalendar = "*-*-* 03:00:00";
|
||||
Persistent = true;
|
||||
OnUnitActiveSec = "1d";
|
||||
AccuracySec = "1h";
|
||||
Unit = "nextcloud-backup.service";
|
||||
};
|
||||
wantedBy = [ "timers.target" ];
|
||||
};
|
||||
|
||||
systemd.services."nextcloud-backup" = {
|
||||
enable = true;
|
||||
serviceConfig = {
|
||||
User = "nextcloud";
|
||||
ExecStart =
|
||||
let
|
||||
script = pkgs.writeShellScriptBin "backup" ''
|
||||
nextcloudPath="/var/lib/nextcloud"
|
||||
mountPoint="/mnt/backup_dn"
|
||||
nextcloudBakPath="$mountPoint"
|
||||
nextcloudDBBakPath="$mountPoint/nextcloud-db.bak.tar"
|
||||
|
||||
if [ ! -d "$nextcloudPath" ]; then
|
||||
echo "nextcloud path not found: $nextcloudPath"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$mountPoint" ]; then
|
||||
echo "Backup device is not mounted: $mountPoint"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$nextcloudBakPath" ]; then
|
||||
mkdir -p "$nextcloudBakPath"
|
||||
fi
|
||||
|
||||
echo "Start syncing..."
|
||||
${pkgs.rsync}/bin/rsync -rh --delete "$nextcloudPath" "$nextcloudBakPath"
|
||||
echo "Data dir backup completed."
|
||||
|
||||
echo "Try backing up database (postgresql)"
|
||||
${pkgs.postgresql}/bin/pg_dump -F t nextcloud -f "$nextcloudDBBakPath"
|
||||
echo "Database backup completed."
|
||||
'';
|
||||
in
|
||||
"${script}/bin/backup";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue