Files
2026-07-29 10:47:40 +00:00

22 lines
1.0 KiB
PowerShell

$ErrorActionPreference = "Stop"
$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
$backupDir = Join-Path $PSScriptRoot "..\backups\$timestamp"
New-Item -ItemType Directory -Path $backupDir -Force | Out-Null
$dbUser = if ($env:POSTGRES_USER) { $env:POSTGRES_USER } else { "ielts_mock" }
$dbName = if ($env:POSTGRES_DB) { $env:POSTGRES_DB } else { "ielts_mock" }
docker compose exec -T db pg_dump -U $dbUser -d $dbName -Fc -f /tmp/ielts-mock.dump
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
docker compose cp "db:/tmp/ielts-mock.dump" (Join-Path $backupDir "database.dump")
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
docker compose exec -T db rm -f /tmp/ielts-mock.dump
docker compose exec -T web tar -czf /tmp/ielts-media.tar.gz -C /app media
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
docker compose cp "web:/tmp/ielts-media.tar.gz" (Join-Path $backupDir "media.tar.gz")
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
docker compose exec -T web rm -f /tmp/ielts-media.tar.gz
Write-Host "Backup completed: $backupDir"