feat(archive): BAK-03 Restore-Verfahren fuer Datenbank und Objekt-Storage
internal/restore: Atomarer Restore ueber Temp-Verzeichnis + Rename, nicht-leeres Ziel ohne -force bricht VOR jeder Beruehrung ab, JSONL- Protokoll jedes Laufs. Drei reale Defekte beim Bau gefunden und behoben: pg_combinebackup braucht Plain- statt Tar-Format (Extraktionsschritt ergaenzt), pg_wal.tar.gz wurde nie verifiziert/wiederhergestellt (BAK-01s Verify jetzt erweitert), Go-exec haengt bei pg_ctl start wegen vererbter Pipes (Testfix: echte Logdatei statt CombinedOutput). Beide Restore-Pfade real auf 131 ueber restore-cli nachgewiesen, inkl. echtem Postgres-Start aus wiederhergestelltem Verzeichnis.
This commit is contained in:
@@ -137,6 +137,17 @@ func Forget(ctx context.Context, cfg Config, keepLast int) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Restore stellt snapshotID nach targetDir wieder her (`restic restore`).
|
||||
// targetDir muss bereits existieren; Atomarität gegenüber einem eventuell
|
||||
// nicht-leeren ENDZIEL ist Aufgabe von internal/restore, nicht dieser
|
||||
// Funktion (dieselbe Aufgabenteilung wie backup.Restore).
|
||||
func Restore(ctx context.Context, cfg Config, snapshotID, targetDir string) error {
|
||||
if _, err := run(ctx, cfg, "restore", snapshotID, "--target", targetDir); err != nil {
|
||||
return fmt.Errorf("objectbackup: wiederherstellung: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type snapshotEntry struct {
|
||||
ShortID string `json:"short_id"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user