param( [string]$DataDir = "runtime-data", [string]$BackupDir = "backups" ) $ErrorActionPreference = "Stop" $root = (Resolve-Path ".").Path $resolvedDataDir = Resolve-Path $DataDir if (-not $resolvedDataDir.Path.StartsWith($root)) { throw "Refusing to back up a path outside the repository: $($resolvedDataDir.Path)" } New-Item -ItemType Directory -Path $BackupDir -Force | Out-Null $timestamp = Get-Date -Format "yyyyMMdd-HHmmss" $archivePath = Join-Path $BackupDir "cargoradar-runtime-$timestamp.zip" Compress-Archive -Path (Join-Path $resolvedDataDir.Path "*") -DestinationPath $archivePath -Force [pscustomobject]@{ Backup = (Resolve-Path $archivePath).Path } | Format-List