<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div dir="ltr">…und auch dieses Backup wird zerstört wenn Du von einer defekten SD eine korrupte DB kopierst. Backups *NIEMALS* einfach drüber bügeln sondern rotieren!</div><div dir="ltr"><br></div><div dir="ltr">Viele Grüße, Andreas </div><div dir="ltr"><br><blockquote type="cite">Am 09.08.2021 um 10:51 schrieb John Doe <johndoe@null.net>:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><div style="font-family: Verdana;font-size: 12.0px;"><div>Hallo Andreas,</div>

<div> </div>

<div>hierzu habe ich ein nettes Tool gefunden:</div>

<div> </div>

<div>https://github.com/rdiff-backup/rdiff-backup</div>

<div> </div>

<div>Dieses verwende ich nun, um mein komplettes lokales home-Verzeichnis auf einen cifs-share zu sichern.</div>

<div>Und da hier eben nur die diffs zum letzten Mal gesichert werden, kann ich nun auch etwas höherfrequent ein Backup erstellen, also bspw. alle 12 oder 6 Stunden.</div>

<div>Grüße</div>

<div> </div>

<div>JD.</div>

<div> 
<div> 
<div name="quote" style="margin:10px 5px 5px 10px; padding: 10px 0 10px 10px; border-left:2px solid #C3D9E5; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div style="margin:0 0 10px 0;"><b>Sent:</b> Sunday, August 08, 2021 at 2:12 AM<br>
<b>From:</b> "Andreas Goetz" <cpuidle@gmail.com><br>
<b>To:</b> "volkszaehler.org - users" <volkszaehler-users@demo.volkszaehler.org><br>
<b>Subject:</b> Re: [vz-users] (Daten-)Rettung sqlite.db3 von SD-Karte</div>

<div name="quoted-content">
<div>
<div>…und vor allen Dingen: echtes Backup an einem sicheren Ort!</div>

<div> </div>

<div>Viele Grüße, Andreas </div>

<div> 
<blockquote>Am 08.08.2021 um 02:03 schrieb John Doe <johndoe@null.net>:<br>
 </blockquote>
</div>

<blockquote>
<div>
<div style="font-family: Verdana;font-size: 12.0px;">
<div>Hallo zusammen,</div>

<div> </div>

<div>nach dem Durchlauf der aggregation ist meine Datenbank bis zum Kartencrash wieder intakt.</div>

<div>Nochmal für alle, deren Karte auch hin und wieder mal abschmiert, mein Vorgehen:</div>

<div> </div>

<div>1. Der Karte eine intakte partition table mittels gpart spendiert</div>

<div>(<a href="https://help.ubuntu.com/community/DataRecovery#Gpart" target="_blank">https://help.ubuntu.com/community/DataRecovery#Gpart</a>)</div>

<div> </div>

<div>2. ddrescue wirklich über die komplette Karte mehrfach laufen lassen</div>

<div>(<a href="https://www.linux-magazin.de/ausgaben/2015/11/einfuehrung2/" target="_blank">https://www.linux-magazin.de/ausgaben/2015/11/einfuehrung2/</a>)</div>

<div> </div>

<div>3.  Per testdisk (aus den aktuellen Quellen <a href="https://github.com/cgsecurity/testdisk" target="_blank">https://github.com/cgsecurity/testdisk</a> kompiliert) die sqlite.db3 auf den "neuen" Raspi kopieren</div>

<div> </div>

<div>4. vzlogger und alle cron-Jobs auf dem Zielsystem abschalten</div>

<div> </div>

<div>5. Einen Restore der Datenbank durchführen (<a href="https://wiki.volkszaehler.org/software/tools/dbcopy" target="_blank">https://wiki.volkszaehler.org/software/tools/dbcopy</a>): Zunächst mit einer sicher intakten sqlite.db, danach mit der aus (3) extrahierten (dbcopy.yaml entsprechend anpassen).</div>

<div> </div>

<div>6. Gemäß wiki eine aggregation durchführen.</div>

<div> </div>

<div>
<div>7. cronjobs wieder aktivieren, anschliessend reboot.</div>

<div> </div>

<div>Grüße</div>

<div> </div>

<div>JD.</div>

<div> 
<div style="margin: 10.0px 5.0px 5.0px 10.0px;padding: 10.0px 0 10.0px 10.0px;border-left: 2.0px solid rgb(195,217,229);">
<div style="margin: 0 0 10.0px 0;"><b>Sent:</b> Saturday, August 07, 2021 at 2:54 PM<br>
<b>From:</b> "John Doe" <johndoe@null.net><br>
<b>To:</b> volkszaehler-users@demo.volkszaehler.org<br>
<b>Subject:</b> Re: [vz-users] (Daten-)Rettung sqlite.db3 von SD-Karte</div>

<div>
<div style="font-family: Verdana;font-size: 12.0px;">
<div>Hallo zusammen,</div>

<div> </div>

<div>ich war in der Zwischenzeit mutig und habe durch ein</div>

<div> </div>

<div>
<pre class="code">/var/www/volkszaehler.org/vendor/bin/dbcopy copy -c /etc/dbcopy.yaml</pre>

<p>mit entsprechendem source und target zunächst die sicher intakte sqlite.db3 und im Anschluss diejenige aus meiner Datenrettung wieder eingespielt, Ergebnis: Fast alle meine Daten scheinen per Sichtkontrolle wieder da zu sein. Lediglich ein Peak am Ende, welcher möglicherweise aus dem beginnenden Crash stammt, ist noch übrig, aber den werde ich noch manuell begradigen. Sobald das aggregate durchgelaugen ist, melde ich mich nochmal mit dem endgültigen Ergebnis.</p>

<p>Grüße</p>

<p> </p>

<p>JD.</p>
</div>

<div> 
<div> 
<div style="margin: 10.0px 5.0px 5.0px 10.0px;padding: 10.0px 0 10.0px 10.0px;border-left: 2.0px solid rgb(195,217,229);">
<div style="margin: 0 0 10.0px 0;"><b>Sent:</b> Saturday, August 07, 2021 at 10:20 AM<br>
<b>From:</b> "John Doe" <johndoe@null.net><br>
<b>To:</b> volkszaehler-users@demo.volkszaehler.org<br>
<b>Subject:</b> Re: [vz-users] (Daten-)Rettung sqlite.db3 von SD-Karte</div>

<div>
<div style="font-family: Verdana;font-size: 12.0px;">
<div>Hallo zusammen,</div>

<div> </div>

<div>ich habe noch mal ein wenig herumprobiert. Zunächst habe ich der Karte mit gpart einen neuen Header spendiert. Danach habe ich ddrescue einige Zeit über die Karte laufen lassen, Ergebnis: 99.99 pct rescued. In der Folge habe ich mit testdisk (kompiliert aus den aktuellen Github-Sourcen) die sqlite.db3 kopiert.</div>

<div>Ein</div>

<div> </div>

<div>sqlite3 ~/Downloads/home/pi/sqlite-dumped.db3 "PRAGMA integrity_check"</div>

<div> </div>

<div>liefert leider</div>

<div> </div>

<div>
<div>Page 718135: btreeInitPage() returns error code 11<br>
Page 699295: btreeInitPage() returns error code 11<br>
Page 412064: btreeInitPage() returns error code 11<br>
On tree page 370249 cell 18: Rowid 0 out of order<br>
On tree page 370249 cell 17: Rowid 0 out of order<br>
On tree page 370249 cell 16: Rowid 0 out of order<br>
On tree page 370249 cell 15: Rowid 0 out of order<br>
On tree page 370249 cell 14: Rowid 0 out of order<br>
On tree page 370249 cell 13: Rowid 0 out of order<br>
On tree page 370249 cell 12: Rowid 0 out of order<br>
On tree page 370249 cell 11: Rowid 0 out of order<br>
On tree page 370249 cell 10: Rowid 0 out of order<br>
On tree page 370249 cell 9: Rowid 0 out of order<br>
On tree page 370249 cell 8: Rowid 0 out of order<br>
On tree page 370249 cell 7: Rowid 0 out of order<br>
On tree page 370249 cell 6: Rowid 0 out of order<br>
On tree page 370249 cell 5: Rowid 0 out of order<br>
On tree page 370249 cell 4: Rowid 0 out of order<br>
On tree page 370249 cell 3: Rowid 0 out of order<br>
On tree page 370249 cell 2: Rowid 0 out of order<br>
On tree page 370249 cell 1: Rowid 0 out of order<br>
On tree page 370249 cell 0: Rowid 0 out of order<br>
Fragmentation of 412 bytes reported as 0 on page 370249<br>
On tree page 369985 cell 275: Rowid 26718170 out of order<br>
Page 335622: btreeInitPage() returns error code 11<br>
Page 335601: btreeInitPage() returns error code 11<br>
Page 326664: btreeInitPage() returns error code 11<br>
Page 326660: btreeInitPage() returns error code 11<br>
Page 326642: btreeInitPage() returns error code 11<br>
Page 326640: btreeInitPage() returns error code 11<br>
Page 183558: btreeInitPage() returns error code 11<br>
Page 145754: btreeInitPage() returns error code 11<br>
Page 133296: btreeInitPage() returns error code 11<br>
Page 131242: btreeInitPage() returns error code 11<br>
Page 130006: btreeInitPage() returns error code 11<br>
Page 21264: btreeInitPage() returns error code 11<br>
Page 775024: btreeInitPage() returns error code 11<br>
Fragmentation of 384 bytes reported as 0 on page 427549<br>
Page 427482: btreeInitPage() returns error code 11<br>
Page 370242: btreeInitPage() returns error code 11<br>
Page 335617: btreeInitPage() returns error code 11<br>
Page 335612: btreeInitPage() returns error code 11<br>
Page 326678: btreeInitPage() returns error code 11<br>
Page 133332: btreeInitPage() returns error code 11<br>
Page 132755: btreeInitPage() returns error code 11<br>
Page 427473: btreeInitPage() returns error code 11<br>
Page 412090: btreeInitPage() returns error code 11<br>
Page 341941: btreeInitPage() returns error code 11<br>
Page 326667: btreeInitPage() returns error code 11<br>
Page 326622: btreeInitPage() returns error code 11<br>
Page 148619: btreeInitPage() returns error code 11<br>
Page 148612: btreeInitPage() returns error code 11<br>
Page 133328: btreeInitPage() returns error code 11<br>
Page 131207: btreeInitPage() returns error code 11<br>
Page 427494: btreeInitPage() returns error code 11<br>
Page 148621: btreeInitPage() returns error code 11<br>
Page 133324: btreeInitPage() returns error code 11<br>
Page 14360: btreeInitPage() returns error code 11<br>
Page 341881: btreeInitPage() returns error code 11<br>
Page 326606: btreeInitPage() returns error code 11<br>
Page 131196: btreeInitPage() returns error code 11<br>
Error: database disk image is malformed</div>

<div> </div>

<div> </div>

<div>Der Tip von</div>

<div><a href="https://stackoverflow.com/questions/18259692/how-to-recover-a-corrupt-sqlite3-database/18260642" target="_blank">https://stackoverflow.com/questions/18259692/how-to-recover-a-corrupt-sqlite3-database/18260642</a></div>

<div>liefert leider eine leere DB.</div>

<div> </div>

<div>Hat evtl. noch jemand eine Idee, was ich versuchen könnte ?</div>

<div>Grüße</div>

<div> </div>

<div>JD.</div>
</div>

<div> </div>

<div> </div>

<div> </div>

<div> 
<div> 
<div style="margin: 10.0px 5.0px 5.0px 10.0px;padding: 10.0px 0 10.0px 10.0px;border-left: 2.0px solid rgb(195,217,229);">
<div style="margin: 0 0 10.0px 0;"><b>Sent:</b> Thursday, August 05, 2021 at 6:27 PM<br>
<b>From:</b> "Andreas Götz" <cpuidle@gmail.com><br>
<b>To:</b> "volkszaehler.org - users" <volkszaehler-users@demo.volkszaehler.org><br>
<b>Subject:</b> Re: [vz-users] (Daten-)Rettung sqlite.db3 von SD-Karte</div>

<div>
<div>Deine DB ist kaputt und die Daten weg, mehr lässt sich dazu nicht sagen…<br>
 
<div>Viele Grüße,
<div>Andreas</div>
</div>

<div> 
<blockquote>Am 05.08.2021 um 18:21 schrieb John Doe <johndoe@null.net>:<br>
 </blockquote>
</div>

<blockquote>
<div>
<div style="font-family: Verdana;font-size: 12.0px;">
<div>Hallo zusammen,</div>

<div> </div>

<div>kurzes Update:</div>

<div> </div>

<div>Ich habe mittels testdisk aus der Karte eine sqlite.db3 herausbekommen (via Image-Erstellung der ext4-Partition). Beim Versuch des Zurückspielens nun leider das:</div>

<div> </div>

<div>
<div>pi@raspberrypi:~ $ sudo /var/www/volkszaehler.org/vendor/bin/dbcopy copy -c /etc/dbcopy.yaml<br>
entities: copying 2 rows (overwrite)<br>
 [============================] 100%  < 1 sec/< 1 sec  2 rows</div>

<div>properties: copying 16 rows (overwrite)<br>
 [============================] 100%  < 1 sec/< 1 sec  16 rows</div>

<div>entities_in_aggregator: copying 0 rows (overwrite)<br>
    0 [>---------------------------] < 1 sec 4.0 MiB</div>

<div>data: copying<br>
In AbstractSQLiteDriver.php line 70:<br>
                                                                          <br>
  An exception occurred while executing 'SELECT COUNT(1) FROM ("data")':  <br>
                                                                          <br>
  SQLSTATE[HY000]: General error: 11 database disk image is malformed     <br>
                                                                          </div>

<div>In PDOConnection.php line 90:<br>
                                                                       <br>
  SQLSTATE[HY000]: General error: 11 database disk image is malformed  <br>
                                                                       </div>

<div>In PDOConnection.php line 88:<br>
                                                                       <br>
  SQLSTATE[HY000]: General error: 11 database disk image is malformed  <br>
                                                                       </div>

<div>copy [-c|--config CONFIG] [-b|--batch BATCH] [-k|--keep-constraints] [--] [<tables>...]</div>

<div> </div>

<div> </div>

<div>Abfolge:</div>

<div> </div>

<div>Wie im wiki beschrieben eine sqlite.db3 mit dbcopy create angelegt. Diese mit der sqlite.db3 aus testdisk ersetzt, in der dbcopy.yaml Quelle und Ziel vertauscht und obigen Befehl verwendet.</div>

<div>Könnte da noch was zu retten sein ?</div>

<div>Grüße</div>

<div> </div>

<div>JD.</div>
</div>

<div> 
<div> 
<div style="margin: 10.0px 5.0px 5.0px 10.0px;padding: 10.0px 0 10.0px 10.0px;border-left: 2.0px solid rgb(195,217,229);">
<div style="margin: 0 0 10.0px 0;"><b>Sent:</b> Wednesday, August 04, 2021 at 9:16 PM<br>
<b>From:</b> "John Doe" <johndoe@null.net><br>
<b>To:</b> volkszaehler-users@demo.volkszaehler.org<br>
<b>Subject:</b> [vz-users] (Daten-)Rettung sqlite.db3 von SD-Karte</div>

<div>
<div style="font-family: Verdana;font-size: 12.0px;">
<div>Hallo zusammen,</div>

<div> </div>

<div>mitr ist mal wieder eine SD-Karte abgeraucht. Ich habe ein älteres Image der Karte und zwei Backups der sqlite.db3 - ein älteres und ein uraltes.</div>

<div>Aufgrund persönlicher Unzulänglichkeiten hat die tägliche Datensicherung nicht das getan, was ich vorhatte.</div>

<div>Nun meine Frage:</div>

<div>Ich habe ein einem SD-Kartenleser noch Zugriff auf die SD-Karte.</div>

<div>Wenn ich die sqlite.dp3 aus dem Verzeichnis /home/pi auf meinen Rechner kopieren will, ergibt sich ein</div>

<div> </div>

<div>
<div>cp: Fehler beim Lesen von 'sqlite.db3': Eingabe-/Ausgabefehler</div>

<div> </div>

<div> </div>

<div>Vermutlich, weil an der Stelle die Karte schin teilweise defekt ist. Gibt es bspw. mit testdisk eine Möglichkeit, diese relativ aktuelle sqlite.db3 doch noch zu retten ?</div>

<div>Die Dateigröße scheint zur theoretischen DB-Größe zu passen, alleine: Ich komme nicht kopierfähig dran.</div>

<div>Beste Grüße</div>

<div> </div>

<div>JD.</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div></div>
</div></blockquote></body></html>