Bash-Geschichte nach Stromausfall beschädigt

425
Rich

Ich ging in den Laden und als ich zurückkam, stellte ich fest, dass ich vergessen hatte, meinen Laptop anzuschließen, und er war an einem schwachen Akku gestorben. Beim Neustart war ich überrascht, dass meine Bash-Historie jetzt anstelle der Terminalbefehle so aussah:

don@don-Dell-PowerbookBook-777w:~$ �$6:�P!^G����^^B)A|E1����t^E���@=(�|0H�^N�s����+�����C�Ώ)p��s� pn�ǡ!�ǝ\��"^H�n^M^Rs��$u�^[���^S����![�0^R&^R���@��T���v��8^T^N��^ZJ�O�*�Y$:�A�^[6��jٸ�EIl>��^L�ژ���^^^Xw^T^[��/^Q^Aw ߨ~�>���s"�6d��^\�U%�a^M/p^P��iޠ��\^M^Z^9��^_l�]*�Ų���J͜��^UK�u� ����N^S���^G5^B^D�p^^^E��4�&�Qi�^U^?�T^T��- 

Und als ich rannte gedit .bash_history, habe ich Folgendes bekommen:

Beim Öffnen der Datei "/home/dave/.bash_history" ist ein Problem aufgetreten.

Die Datei, die Sie geöffnet haben, enthält einige ungültige Zeichen. Wenn Sie mit der Bearbeitung dieser Datei fortfahren, kann dieses Dokument beschädigt werden. Sie können auch eine andere Zeichenkodierung wählen und es erneut versuchen.

Zeichenkodierung: Aktuelles Gebietsschema (UTF-8)

und dann:

\D3Q\F6\98ڵ\9B\A8a\9B\97\C7׬\A2\B5\F7\B0,.\B4\FD\E4N\A9͈\FEK\EF蓪*,q\D5HbI\C6!iB\BC\D33\A7\C5\EC\E3\\AE|\D1<%Hx9a\FEI\BE\93f\84\92\C1\AF\B7Ed,6DI<\B5\F9*t\00\DB]PZ\AE\EB\D2\A1e\8C\D4\F8\B4'\8A\CD\00F-\89\CBs\FD;k\CBUv\E1\F8߱y\D0;\BB\9E ůLteE\94\9B\D1\00\E7\CF)\\E51,\9C\81}\E6\96=\C7l\D8v.#s\CE\D5\C2%2\8EZ\93\93<\DD'oIKl.\CC81~\80\DC\F9\A5ȡ@6\E0\DA\F8\92j%\D2;: b(\BE\F5Dv\86\CD"\A0vCc\EC\A2\F8oP\88\CEG\ED~y\866\B9\AF\BF\BF\DC}\8F\94\CF\DB\C9\D6\DC\D9\E7\E4\DC-\94H\B3\A7\F3\DF\EB\9DS+\E5\C8\81p\8FK\E2\88h\E7f\A8\809\B4\FBo}&aa\FA;\B7q\E8\8D\DE\B5\B5\DE{\EB\A3\F9D\BB\E8\80\A0\FA\F2\F6\A2\BB\C6\D1\CEaN?*H8\91\BD\B83y\FF\BA)\DDl)\87vn\97D\EF\EEOS\F5\FB\B0U\ 83 \ 94 \ E7D \ E0: \ A3R \ 94 \ EC \ B9O \ D9wr^D,Q\8B2\C1\9A;l\9Db\86@C*$\D4=\B7v\86ۉ\85\B5\D0g\85\C0{Cb\EA;\ACK\87q\FE\BA\83\B7\86\C0\DF

Für hunderte und hunderte von Zeilen. Gibt es überhaupt etwas, um das zu retten, oder sollte ich einfach die Kugel beißen und alles löschen?

0

1 Antwort auf die Frage

0
Eirik Fuller

Diese Frage enthält Antworten, die verschiedene Möglichkeiten aufzeigen, um eine Konsistenzprüfung für die Root-Partition durchzuführen. Wenn der von Ihnen erwähnte Neustart keine Konsistenzprüfung durchführte, kann es sinnvoll sein, die fsckRoot-Partition auszuführen . Nachdem der fsckVorgang abgeschlossen ist (unabhängig davon, ob dies bereits während des Neustarts aufgetreten ist oder Sie ihn explizit ausführen), sind Ihre Metadaten konsistent, es kann jedoch nicht garantiert werden, dass der Inhalt der Datei korrekt ist. Ein Ausgabeprotokoll von gibt fsckmöglicherweise Aufschluss über das Ausmaß des Schadens.

Das besondere Problem Ihrer bash-History-Datei sieht so aus, als enthielt sie irrtümlicherweise Daten, die zu einer völlig anderen Datei gehören. Der beste Fall dafür könnte sein, dass der Verlaufsdatei Blöcke zugewiesen wurden, die jedoch nicht vor dem Stromausfall geschrieben wurden. In diesem Fall könnte der Inhalt der aktuellen Datei einfach der Inhalt sein, dessen Blockierung vor der Zuweisung zu Ihrer Bash-Verlaufsdatei zufällig war . Eine pessimistischere Interpretation dieser Dateiinhalte ist, dass Metadaten beschädigt wurden (in diesem Fall fsckist dies die wahrscheinliche Vorgehensweise). Möglicherweise möchten Sie nach anderen Dateien Ausschau halten, die möglicherweise betroffen sind. Im besten Fall sind nur Dateien mit einem ausreichend aktuellen Änderungszeitpunkt problematisch.

Um das zu retten, was von Ihrer bash-Historie noch übrig ist, könnte es eine einfache Methode sein, es dem stringsBefehl zuzuführen (der die meisten Inhalte herausfiltert, die wie binärer Inhalt aussehen). Es ist wahrscheinlich sinnvoll, den Standardwert von --bytes( -n) zu überschreiben, wenn Sie dies tun, um etwas näher an einer wahrscheinlichen Mindestbefehlslänge zu liegen. Je nachdem, wie groß Ihre Bash-History-Datei ist, und dem zugrunde liegenden Grund für den falschen Inhalt, werden möglicherweise tatsächliche Befehle dort gespeichert.

Es kann sinnvoll sein, die bash-Verlaufsdatei umzubenennen, anstatt sie sofort zu entfernen, damit Sie die Wiederherstellungsversuche verschieben können und auch eine Bash-Historie haben, die bei der regulären Ausführung von bash keine Probleme verursacht.