kpi-dashboard / backup.ps1
Admin
Initial HF deploy
04477e7
Raw
History Blame
2.16 kB
param(
[int]$KeepCount = 10
)
$ProjectRoot = Split-Path -Parent $MyInvocation.MyCommand.Path
$BackupRoot = Join-Path $ProjectRoot "backups"
$DateStamp = Get-Date -Format "yyyyMMdd_HHmmss"
$BackupDir = Join-Path $BackupRoot $DateStamp
# Files to backup
$DbFile = Join-Path (Join-Path $ProjectRoot "instance") "kpi_dashboard.db"
$UploadsDir = Join-Path $ProjectRoot "uploads"
Write-Host "=== KPI Dashboard Backup ===" -ForegroundColor Cyan
Write-Host "Source: $ProjectRoot"
Write-Host "Target: $BackupDir"
Write-Host ""
# Create backup directory
New-Item -ItemType Directory -Path $BackupDir -Force | Out-Null
# 1. Backup database
if (Test-Path $DbFile) {
Copy-Item -Path $DbFile -Destination (Join-Path $BackupDir "kpi_dashboard.db")
Write-Host "[OK] Database backed up" -ForegroundColor Green
} else {
Write-Host "[WARN] Database not found: $DbFile" -ForegroundColor Yellow
}
# 2. Backup uploads
if (Test-Path $UploadsDir) {
$uploadDest = Join-Path $BackupDir "uploads"
Copy-Item -Path $UploadsDir -Destination $uploadDest -Recurse
Write-Host "[OK] Uploads backed up" -ForegroundColor Green
} else {
Write-Host "[WARN] Uploads directory not found" -ForegroundColor Yellow
}
# 3. Backup config and env
$EnvExample = Join-Path $ProjectRoot ".env.example"
if (Test-Path $EnvExample) {
Copy-Item -Path $EnvExample -Destination (Join-Path $BackupDir ".env.example")
}
# 4. Clean up old backups (keep last $KeepCount)
$AllBackups = Get-ChildItem -Path $BackupRoot -Directory | Sort-Object Name -Descending
if ($AllBackups.Count -gt $KeepCount) {
$ToRemove = $AllBackups | Select-Object -Skip $KeepCount
foreach ($Dir in $ToRemove) {
Remove-Item -Path $Dir.FullName -Recurse -Force
Write-Host "[CLEAN] Removed old backup: $($Dir.Name)" -ForegroundColor DarkYellow
}
}
# Summary
$BackupSize = "{0:N2}" -f ((Get-ChildItem -Path $BackupDir -Recurse | Measure-Object -Property Length -Sum).Sum / 1KB)
Write-Host ""
Write-Host "Backup complete: $BackupDir ($BackupSize KB)" -ForegroundColor Cyan
Write-Host "Total backups: $(@(Get-ChildItem -Path $BackupRoot -Directory).Count)" -ForegroundColor Cyan