Histórico de bash corrompido após perda de energia

1

Eu fui para a loja e quando voltei, descobri que tinha esquecido de ligar meu laptop e ele tinha morrido de uma bateria fraca. Quando eu reiniciei, fiquei surpreso ao descobrir que meu histórico bash, em vez de conter meus comandos de terminal, agora se parecia com isso:

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��- 

E quando eu corri gedit .bash_history , eu entendi:

Ocorreu um problema ao abrir o arquivo "/home/dave/.bash_history".

O arquivo que você abriu tem alguns caracteres inválidos. Se você continuar editando este arquivo, poderá corromper este documento. Você também pode escolher outra codificação de caracteres e tentar novamente.

Codificação de caracteres: localidade atual (UTF-8)

e depois:

\D3Q\F6ڵB\A8aB\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\BEf\C1\AF\B7Ed,6DI<\B5\F9*twr^D,QB2\C1A;lDb@C*$\D4=\B7vۉ\B5\D0g\C0{Cb\EA;\ACKq\FE\BA\B7\C0\DF\DB]PZ\AE\EB\D2\A1eC\D4\F8\B4'A\CD%code%F-\CBs\FD;k\CBUv\E1\F8߱y\D0;\BBE ůLteEB\D1%code%\E7\CF)\E51,C}\E6=\C7l\D8v.#s\CE\D5\C2%2EZ<\DD'oIKl.\CC81~\DC\F9\A5ȡ@6\E0\DA\F8j%\D2;: b(\BE\F5Dv\CD"\A0vCc\EC\A2\F8oP\CEG\ED~y6\B9\AF\BF\BF\DC}F\CF\DB\C9\D6\DC\D9\E7\E4\DC-H\B3\A7\F3\DF\EBDS+\E5\C8pFK\E2h\E7f\A89\B4\FBo}&aa\FA;\B7q\E8D\DE\B5\B5\DE{\EB\A3\F9D\BB\E8\A0\FA\F2\F6\A2\BB\C6\D1\CEaN?*H8\BD\B83y\FF\BA)\DDl)vnD\EF\EEOS\F5\FB\B0U \ 83 \ 94 \ E7D \ E0: \ A3R \ 94 \ EC \ B9O \ D9 %code%

Por centenas e centenas de linhas. Existe alguma maneira de salvar isso, ou devo apenas morder a bala e deletar tudo?

    
por Rich 28.09.2016 / 04:52

1 resposta

1

Esta questão tem respostas que listam várias maneiras de realizar uma verificação de consistência na partição raiz. Se a reinicialização mencionada não tiver executado uma verificação de consistência, poderá fazer sentido executar fsck em sua partição raiz. Depois que fsck for concluído (se isso já ocorreu durante a reinicialização ou se você o executar explicitamente), seus metadados serão consistentes, mas não há garantia de que o conteúdo do arquivo esteja correto. Um log de saída de fsck pode fornecer algumas dicas sobre a extensão do dano.

O problema particular com o arquivo histórico do bash parece conter dados pertencentes a um arquivo completamente diferente erroneamente. O melhor caso para isso pode ser que blocos foram alocados para o arquivo de histórico, mas não escritos antes da perda de energia, caso em que o conteúdo do arquivo atual pode ser simplesmente o conteúdo que os blocos desalocados possuíam antes de serem atribuídos ao arquivo de histórico bash . Uma interpretação mais pessimista do conteúdo desses arquivos é que os metadados foram corrompidos (caso em que fsck é o provável curso de ação). Você pode querer manter-se atento a quaisquer outros arquivos que possam ter sido afetados. No melhor dos casos, apenas arquivos com tempo de modificação suficientemente recente serão problemáticos.

Quanto a recuperar o que resta do seu histórico bash, uma abordagem simples pode ser alimentá-lo com o comando strings (que deve filtrar a maior parte do que parece ser conteúdo binário). Provavelmente faz sentido sobrescrever o valor padrão de --bytes ( -n ) se você fizer isso, para algo mais próximo de um provável comprimento mínimo de comando. Dependendo de quão grande é o seu arquivo de histórico bash, e a razão subjacente para o seu conteúdo falso, pode haver ou não quaisquer comandos reais armazenados lá.

Pode fazer sentido renomear seu arquivo de histórico bash em vez de removê-lo imediatamente, para que você possa adiar os esforços de salvamento e também ter um histórico bash que não cause problemas com a operação regular do bash.

    
por 28.09.2016 / 16:36