Add comprehensive backup system for Gitea database

This commit is contained in:
2025-03-01 23:28:11 -07:00
parent dcc2dda769
commit 5084a0c98f
7 changed files with 385 additions and 1 deletions

67
restore-gitea-db.ps1 Normal file
View File

@@ -0,0 +1,67 @@
# Gitea Database Restore Script
param (
[Parameter(Mandatory=$true)]
[string]$BackupFile
)
# Check if backup file exists
if (-not (Test-Path $BackupFile)) {
Write-Host "Backup file not found: $BackupFile" -ForegroundColor Red
exit 1
}
# Extract the backup if it's a zip file
$tempFile = $null
if ($BackupFile.EndsWith(".zip")) {
$tempDir = [System.IO.Path]::GetTempPath()
$tempFile = Join-Path $tempDir "gitea-db-restore-temp.sql"
Write-Host "Extracting backup file..."
Expand-Archive -Path $BackupFile -DestinationPath $tempDir -Force
$extractedFile = Get-ChildItem -Path $tempDir -Filter "*.sql" | Select-Object -First 1
if ($extractedFile) {
Copy-Item $extractedFile.FullName -Destination $tempFile
$BackupFile = $tempFile
} else {
Write-Host "Failed to extract SQL file from backup" -ForegroundColor Red
exit 1
}
}
# Confirm before proceeding
Write-Host "WARNING: This will overwrite the current database with the backup." -ForegroundColor Yellow
Write-Host "Make sure your Gitea service is stopped before proceeding." -ForegroundColor Yellow
$confirmation = Read-Host "Do you want to continue? (y/n)"
if ($confirmation -ne "y") {
Write-Host "Restore cancelled."
if ($tempFile -and (Test-Path $tempFile)) {
Remove-Item $tempFile
}
exit 0
}
# Stop Gitea services
Write-Host "Stopping Gitea services..."
docker-compose stop
# Restore the database
Write-Host "Restoring database from backup..."
Get-Content $BackupFile | docker exec -i gitea-db psql -U gitea -d gitea
# Check restore status
if ($LASTEXITCODE -eq 0) {
Write-Host "Database restore completed successfully!" -ForegroundColor Green
} else {
Write-Host "Database restore failed!" -ForegroundColor Red
}
# Clean up temp file if created
if ($tempFile -and (Test-Path $tempFile)) {
Remove-Item $tempFile
}
# Restart Gitea services
Write-Host "Starting Gitea services..."
docker-compose start