Initial commit of general borgmatic configuration, scripts, and systemd files
This commit is contained in:
22
post-backup-all-docker-compose-up.sh
Executable file
22
post-backup-all-docker-compose-up.sh
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Collect exclusions passed as arguments
|
||||
exclusions=("$@")
|
||||
|
||||
for dir in /docker/*/
|
||||
do
|
||||
# Get the base folder name from path
|
||||
folder=$(basename "$dir")
|
||||
|
||||
# Skip if folder is in the exclusions array
|
||||
if [[ " ${exclusions[@]} " =~ " $folder " ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
cd "$dir" || {
|
||||
echo "Failed to enter directory: $dir"
|
||||
continue
|
||||
}
|
||||
|
||||
docker compose up
|
||||
done
|
||||
22
pre-backup-all-docker-compose-down.sh
Executable file
22
pre-backup-all-docker-compose-down.sh
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Collect exclusions passed as arguments
|
||||
exclusions=("$@")
|
||||
|
||||
for dir in /docker/*/
|
||||
do
|
||||
# Get the base folder name from path
|
||||
folder=$(basename "$dir")
|
||||
|
||||
# Skip if folder is in the exclusions array
|
||||
if [[ " ${exclusions[@]} " =~ " $folder " ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
cd "$dir" || {
|
||||
echo "Failed to enter directory: $dir"
|
||||
continue
|
||||
}
|
||||
|
||||
docker compose down
|
||||
done
|
||||
70
systemd/borgmatic.service
Normal file
70
systemd/borgmatic.service
Normal file
@@ -0,0 +1,70 @@
|
||||
[Unit]
|
||||
Description=borgmatic backup
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
Documentation=https://torsion.org/borgmatic/
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RuntimeDirectory=borgmatic
|
||||
StateDirectory=borgmatic
|
||||
|
||||
# Load single encrypted credential.
|
||||
#LoadCredentialEncrypted=borgmatic.pw
|
||||
|
||||
# Load multiple encrypted credentials.
|
||||
# LoadCredentialEncrypted=borgmatic:/etc/credstore.encrypted/borgmatic/
|
||||
|
||||
# Security settings for systemd running as root, optional but recommended to improve security. You
|
||||
# can disable individual settings if they cause problems for your use case. For more details, see
|
||||
# the systemd manual: https://www.freedesktop.org/software/systemd/man/systemd.exec.html
|
||||
LockPersonality=true
|
||||
# Certain borgmatic features like Healthchecks integration need MemoryDenyWriteExecute to be off.
|
||||
# But you can try setting it to "yes" for improved security if you don't use those features.
|
||||
MemoryDenyWriteExecute=no
|
||||
NoNewPrivileges=yes
|
||||
PrivateDevices=yes
|
||||
PrivateTmp=yes
|
||||
ProtectClock=yes
|
||||
ProtectControlGroups=yes
|
||||
ProtectHostname=yes
|
||||
ProtectKernelLogs=yes
|
||||
ProtectKernelModules=yes
|
||||
ProtectKernelTunables=yes
|
||||
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
|
||||
RestrictNamespaces=yes
|
||||
RestrictRealtime=yes
|
||||
RestrictSUIDSGID=yes
|
||||
SystemCallArchitectures=native
|
||||
SystemCallFilter=@system-service
|
||||
SystemCallErrorNumber=EPERM
|
||||
# To restrict write access further, change "ProtectSystem" to "strict" and
|
||||
# uncomment "ReadWritePaths", "TemporaryFileSystem", "BindPaths" and
|
||||
# "BindReadOnlyPaths". Then add any local repository paths to the list of
|
||||
# "ReadWritePaths". This leaves most of the filesystem read-only to borgmatic.
|
||||
ProtectSystem=full
|
||||
# ReadWritePaths=-/mnt/my_backup_drive
|
||||
# This will mount a tmpfs on top of /root and pass through needed paths
|
||||
# TemporaryFileSystem=/root:ro
|
||||
# BindPaths=-/root/.cache/borg -/root/.config/borg -/root/.borgmatic
|
||||
# BindReadOnlyPaths=-/root/.ssh
|
||||
|
||||
# May interfere with running external programs within borgmatic hooks.
|
||||
#CapabilityBoundingSet=CAP_DAC_READ_SEARCH CAP_NET_RAW
|
||||
|
||||
# Lower CPU and I/O priority.
|
||||
Nice=19
|
||||
CPUSchedulingPolicy=batch
|
||||
IOSchedulingClass=best-effort
|
||||
IOSchedulingPriority=7
|
||||
IOWeight=100
|
||||
|
||||
Restart=no
|
||||
# Prevent rate limiting of borgmatic log events. If you are using an older version of systemd that
|
||||
# doesn't support this (pre-240 or so), you may have to remove this option.
|
||||
LogRateLimitIntervalSec=0
|
||||
|
||||
# Delay start to prevent backups running during boot. Note that systemd-inhibit requires dbus and
|
||||
# dbus-user-session to be installed.
|
||||
ExecStartPre=sleep 1m
|
||||
ExecStart=systemd-inhibit --who="borgmatic" --what="sleep:shutdown" --why="Prevent interrupting scheduled backup" /root/.local/bin/borgmatic --verbosity -2 --syslog-verbosity 1
|
||||
9
systemd/borgmatic.timer
Normal file
9
systemd/borgmatic.timer
Normal file
@@ -0,0 +1,9 @@
|
||||
[Unit]
|
||||
Description=Run borgmatic backup
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* 5:00:00
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
Reference in New Issue
Block a user