Como recuperar um nó / conteúdo de um arquivo tar que foi sobrescrito

0

Disclaimer: Eu não sou muito bom em escrever perguntas, e o meu é um cenário muito específico. Então, vou pular direto para a situação:

Eu estava navegando no meu sistema de arquivos, e de alguma forma consegui baixar o arquivo tar contendo dois nós críticos ( tarfile::todo/main e tarfile::todo/code ) do meu FS local, e escrevi no mesmo arquivo. Assim que percebi o que o downloader estava fazendo, rapidamente parei e verifiquei o tarfile para descobrir, para meu espanto, que apenas um pequeno pedaço foi deixado, e o resto foi truncado. Eu não sei porque ele não fez backup do arquivo existente antes de escrever algo a ele, ou por que o session.tar não foi enviado para o repositório do git, mas agora a coisa toda acabou. Eu sou um usuário muito cuidadoso, mas quando eu estrago tudo, é absolutamente catastrófico.

Depois que o extundelete falhou ao recuperar o arquivo, naveguei por aqui para encontrar este , que fornece um método que combina grep e dd para encontrar e ler os dados diretamente do disco rígido.

Mais contexto:

  • Meu diretório /home/user está montado em uma unidade separada: /dev/sdb3
  • Hoje é o segundo dia tentando recuperar os arquivos.
  • A saída no próximo parágrafo foi gerada hoje.

Depois que fiz o combo grep / dd, obtive essa saída . Como no mundo eu uso isso para recuperar meus arquivos? Eu tentei copiá-lo em um .file.swp e recuperar com vim -r na esperança de que fosse um arquivo de permuta vim, mas não é. Eu nunca vi esse formato antes, então não tenho ideia do que isso significa.

Gostaria que realmente gostasse de recuperar esses dados. Como eu disse antes, é crítico. É a verdadeira cesta que tem todos os meus ovos. Perder seria um golpe doloroso para a produtividade e organização.

    
por Braden Best 19.11.2015 / 18:10

1 resposta

0

Bem, acho que encontrei a solução. Para começar, vou começar com o link que postei na pergunta.

Em Mark Plotnick .

Primeira execução:

sudo grep -a -b "[text from deleted file]" /dev/[drive where it was stored]

Que gerará um pouco de saída. Tais como:

13813610612: a bunch of text

Você pegará o número e o usará com dd para ler diretamente do seu disco rígido , contornando o sistema de arquivos.

sudo dd if=/dev/[same drive from before] \
        of=./salvaged \
        count=2000 \
        skip=$(expr [number] / 512)

Então eu escrevi um script para usar essa técnica e gerou cerca de cem arquivos de 1MB correspondentes a "tarfile".

Acho que minha decisão não ortodoxa de manter tudo em um arquivo .tar normal me salvou, porque eu encontrei os mesmos dados em vários lugares no meu disco rígido. Eu encontrei tudo que eu precisava de volta várias vezes.

Agora eu só tenho que classificar mais de um gigabyte de texto aleatório / lixo binário. Ugh . Isso é muito trabalho.

    
por 21.11.2015 / 02:48