<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">Hallo zusammen,<div><br></div><div>in den Zusammenhang habe ich eine Frage, wie erkennt DB-copy was noch nicht gesichert ist? Kann man mehrere Sicherungen anlegen, zb pro Wochentag, und jede enthält die Daten seid der letzten Sicherung an diesen Wochentag. <br><br><div dir="ltr">Thomas <div><br></div><div><br></div></div><div dir="ltr"><br><blockquote type="cite">Am 09.08.2021 um 11:49 schrieb Andreas Goetz <cpuidle@gmail.com>:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><meta http-equiv="content-type" content="text/html; charset=utf-8"><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></div></blockquote></div></body></html>