Das ist die schlimmste Stunde im Beruf — und man übersteht sie öfter, als es sich anfühlt. Arbeiten Sie von der neuesten Kopie rückwärts und überschreiben Sie beim Versuchen nichts.
Zuerst: das Original nicht anfassen
cp backup.tar.gz /srv/work/backup-copy.tar.gz
Jeder Rettungsversuch unten ist irgendwo zerstörerisch. Arbeiten Sie immer auf einer Kopie, dann kostet ein Fehlversuch nichts.
Wenn gzip sich weigert
gzip -t backup.tar.gz # what is wrong
zcat backup.tar.gz > partial.tar 2>/dev/null || true
tar -xf partial.tar --ignore-zeros --warning=no-timestamp
Ein abgeschnittenes gzip entpackt trotzdem alles bis zur Schadstelle. Bei einem alphabetisch geordneten Archiv ist das oft der größte Teil der Website.
Wenn sich ein SQL-Dump nicht importieren lässt
zcat db.sql.gz | head -50 # is the header there
zcat db.sql.gz | tail -5 # does it end with "Dump completed"
# import ignoring the failures, then see what arrived
zcat db.sql.gz | mysql --force restore_test
mysql restore_test -e "SHOW TABLES"
--force macht über eine kaputte Anweisung hinaus weiter. Ein mitten in einer Tabelle abgeschnittener Dump stellt jede Tabelle davor wieder her — und oft ist genau die gemeint.
Dann nach anderen Kopien suchen
- Die Snapshots des Anbieters, die getrennt von Ihren sind.
- Ein Staging-Server, also eine etwas ältere Kopie der Produktion.
- Ein Entwickler-Laptop mit einem jüngeren Dump darauf.
- Die eigenen Exporte der Anwendung — eine Bestell-CSV ist mehr wert als nichts.
Danach, damit es kein zweites Mal passiert
Eine Sicherung ist geprüft, oder sie ist eine Hoffnung. Testen Sie das Archiv bei jedem Lauf und spielen Sie regelmäßig eines zurück — siehe Eine Wiederherstellung testen und Ein fehlgeschlagenes Sicherungs-Log lesen. Und behalten Sie mehr als eine, an mehr als einem Ort: Warum eine Sicherung keine Sicherung ist.