Add comprehensive backup system for Gitea database
This commit is contained in:
67
restore-gitea-db.ps1
Normal file
67
restore-gitea-db.ps1
Normal 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
|
||||
Reference in New Issue
Block a user