67 lines
2.0 KiB
PowerShell
67 lines
2.0 KiB
PowerShell
# 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 |