Files
GerbilManager/deploy/scripts/Register-BackupTask.ps1
Gulum dada3af968 OPS-1: startup scripts, autostart task, backup task, ops README, production config
- appsettings.Production.json: Photos:RootPath -> C:\gerbil-data\photos so
  photo files land on a stable host path when ASPNETCORE_ENVIRONMENT=Production
- Start-GerbilManager.ps1: creates data dirs, sets Production env, launches
  AppHost minimised; saves PID for Stop script
- Stop-GerbilManager.ps1: kills AppHost + Vite node processes by PID / port
- Register-AutoStart.ps1: Windows Scheduled Task on user logon (RunLevel Highest)
- Register-BackupTask.ps1: daily 03:00 Scheduled Task for Backup script
- deploy/README.md: Julian ops guide — start/stop commands, phone URL, DHCP
  reservation, firewall rule (Public-profile Wi-Fi), backup/restore procedures,
  prerequisites checklist, troubleshooting table (German)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-06-06 07:11:09 +02:00

70 lines
2.1 KiB
PowerShell

<#
.SYNOPSIS
Registriert den GerbilManager-Backup als taegliche geplante Aufgabe (03:00 Uhr).
.DESCRIPTION
Erstellt eine geplante Aufgabe, die Backup-GerbilManager.ps1 taeglich um 03:00 Uhr
ausfuehrt. Backups werden 7 Tage lang aufbewahrt.
.PARAMETER BackupTime
Uhrzeit fuer das taeliche Backup. Standard: 03:00
.NOTES
Erfordert: PowerShell als Administrator ausfuehren
Aufgabenname: GerbilManager Backup
#>
#Requires -RunAsAdministrator
param(
[string]$BackupTime = "03:00"
)
Set-StrictMode -Version Latest
$ErrorActionPreference = "Stop"
$taskName = "GerbilManager Backup"
$scriptPath = Join-Path $PSScriptRoot "Backup-GerbilManager.ps1"
$logPath = "C:\gerbil-data\backups\backup.log"
if (-not (Test-Path $scriptPath)) {
Write-Error "Backup-Skript nicht gefunden: $scriptPath"
exit 1
}
# Backup-Verzeichnis vorab anlegen
New-Item -ItemType Directory -Force -Path "C:\gerbil-data\backups" | Out-Null
Write-Host "Registriere Backup-Aufgabe '$taskName' (taeglich $BackupTime)..."
$action = New-ScheduledTaskAction `
-Execute "powershell.exe" `
-Argument "-NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File `"$scriptPath`" >> `"$logPath`" 2>&1"
$trigger = New-ScheduledTaskTrigger -Daily -At $BackupTime
$settings = New-ScheduledTaskSettingsSet `
-ExecutionTimeLimit (New-TimeSpan -Hours 1) `
-StartWhenAvailable `
-WakeToRun `
-MultipleInstances IgnoreNew
$principal = New-ScheduledTaskPrincipal `
-UserId $env:USERNAME `
-LogonType Interactive `
-RunLevel Highest
Unregister-ScheduledTask -TaskName $taskName -Confirm:$false -ErrorAction SilentlyContinue
Register-ScheduledTask `
-TaskName $taskName `
-Action $action `
-Trigger $trigger `
-Settings $settings `
-Principal $principal `
-Description "Taegiches Backup der GerbilManager-Datenbank und Fotos um $BackupTime Uhr." `
-Force | Out-Null
Write-Host "Backup-Aufgabe registriert: '$taskName'"
Write-Host "Backups werden taeglich um $BackupTime Uhr nach C:\gerbil-data\backups\ gesichert."
Write-Host "Protokoll: $logPath"
Write-Host ""
Write-Host "Backup jetzt testen: & `"$scriptPath`""