55 lines
1.3 KiB
Bash
55 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|
SERVICE_NAME="raspi-backup.service"
|
|
TIMER_NAME="raspi-backup.timer"
|
|
SERVICE_PATH="/etc/systemd/system/${SERVICE_NAME}"
|
|
TIMER_PATH="/etc/systemd/system/${TIMER_NAME}"
|
|
|
|
[[ "${EUID:-$(id -u)}" -eq 0 ]] || { echo "Bitte mit sudo starten: sudo $SCRIPT_DIR/07_timer_enable.sh"; exit 1; }
|
|
command -v systemctl >/dev/null 2>&1 || { echo "systemctl nicht gefunden."; exit 1; }
|
|
|
|
RUN_SCRIPT="$SCRIPT_DIR/04_run_backup.sh"
|
|
[[ -x "$RUN_SCRIPT" ]] || { echo "FEHLT oder nicht ausführbar: $RUN_SCRIPT"; exit 1; }
|
|
|
|
cat >"$SERVICE_PATH" <<EOF
|
|
[Unit]
|
|
Description=Raspi Backup (runs 04_run_backup.sh)
|
|
Wants=network-online.target
|
|
After=network-online.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
ExecStart=${RUN_SCRIPT}
|
|
|
|
# etwas Hardening
|
|
NoNewPrivileges=true
|
|
PrivateTmp=true
|
|
ProtectSystem=full
|
|
ProtectHome=false
|
|
EOF
|
|
|
|
cat >"$TIMER_PATH" <<EOF
|
|
[Unit]
|
|
Description=Raspi Backup daily timer
|
|
|
|
[Timer]
|
|
OnCalendar=daily
|
|
Persistent=true
|
|
RandomizedDelaySec=10m
|
|
|
|
[Install]
|
|
WantedBy=timers.target
|
|
EOF
|
|
|
|
systemctl daemon-reload
|
|
systemctl enable --now "$TIMER_NAME"
|
|
|
|
echo "Timer aktiviert."
|
|
echo "Status:"
|
|
systemctl --no-pager status "$TIMER_NAME" || true
|
|
echo
|
|
echo "Nächste Runs anzeigen:"
|
|
systemctl list-timers --all | grep -E "raspi-backup\.timer|NEXT" || true
|