- 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>
70 lines
2.1 KiB
PowerShell
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`""
|