Como recuperar um arquivo removido no Linux?

63

Por acidente, usei rm em um arquivo que não queria excluir. Existe uma maneira de recuperá-lo no Linux?

    
por HaiYuan Zhang 08.06.2010 / 04:00

15 respostas

47

A seguir, são apresentadas etapas genéricas para recuperar arquivos de texto.

  1. Primeiro, use o comando wall para informar ao usuário que o sistema está desativado em um único modo de usuário:

    # wall
    System is going down to .... please save your work.
    

    Pressione CTRL + D para enviar a mensagem.

  2. Em seguida, use o comando init 1 para levar o sistema para um modo de usuário único:

    # init 1
    
  3. Usando o grep (forma tradicional do UNIX) para recuperar arquivos

    Use a seguinte sintaxe do grep:

    grep -b 'search-text' /dev/partition > file.txt
    

    OR

    grep -a -B[size before] -A[size after] 'text' /dev/[your_partition] > file.txt
    

    Onde,

    -i : Ignore case distinctions in both the PATTERN and the input files i.e. match both uppercase and lowercase character.
    -a : Process a binary file as if it were text
    -B Print number lines/size of leading context before matching lines.
    -A: Print number lines/size of trailing context after matching lines.
    

    Para recuperar o arquivo de texto que começa com a palavra "nixCraft" em / dev / sda1, você pode tentar o seguinte comando:

    # grep -i -a -B10 -A100 'nixCraft' /dev/sda1 > file.txt
    
  4. Em seguida, use vi para ver o arquivo.txt.

    Este método é útil apenas se o arquivo excluído for um arquivo de texto. Se você estiver usando o sistema de arquivos ext2, experimente o comando recover.

Encontrado no link

    
por 08.06.2010 / 04:04
13
  • Se for muito importante, tire o disco do computador e contrate uma empresa para fazer isso por você.
  • Se for muito importante, monte o disco somente leitura, copie a partição inteira para um arquivo usando dd e tente encontrar o arquivo dentro dele (usando grep ou um editor).

Editar: às vezes, ddrescue funciona melhor que dd .

    
por 09.07.2010 / 08:27
9

Se o seu sistema de arquivos for ext3 , use ext3grep .

    
por 09.07.2010 / 08:29
7

O Testdisk tem uma opção undelete que deve funcionar com o Linux.

Existe um passo a passo para o Linux . Observe que ele funciona para ext2 , ext3 e ext4 .

    
por 08.06.2010 / 05:33
5

Se for o rm padrão, espero que você tenha um backup. O procedimento para recuperar um arquivo excluído seria diferente para cada sistema de arquivos, se isso puder ser feito. O Linux não possui uma "lixeira" embutida; uma vez que você apaga um arquivo, está tudo acabado.

De qualquer forma, você vai querer desconectar o computador - assim que possível, continuar a rodar o computador (até mesmo desligá-lo) causa gravações no disco e aumenta a chance de que alguns blocos anteriormente ocupados pelo arquivo serão sobrescritos. Depois de fazer isso, coloque-o em outro computador, reinicie um CD ao vivo (certificando-se de não montar o unidade, a menos que você a monitore somente para leitura), ou remova o disco rígido e leve-o a um especialista em recuperação de dados.

    
por 09.07.2010 / 08:37
4
  • A única resposta correta é: restaure seu arquivo do backup. Todo mundo deve ter um backup. Para arquivos realmente importantes, você deve ter dois backups. Você não? Bem, muito ruim, aqui está uma lição aprendida (Desculpe soar duro, mas eu estou no armazenamento de dados, e as pessoas não fazem backup até perder alguns dados importantes, isso é um fato dado. Então sim, você parece estúpido, mas assim é quase todo mundo).

  • OK, você não tem backup. você deve parar usando o sistema de arquivos que continha o arquivo RIGHT NOW . Qualquer atividade de gravação pode definitivamente filtrar os dados do arquivo que pode (somente pode ) permanecer no disco.

  • se você cometeu o erro trágico de usar apenas uma partição como o sistema de arquivos raiz e / home, isso significa que você deve inicializar de algum outro dispositivo. AGORA .

  • Se o seu arquivo for de algum formato comum (arquivo do Word, JPG, etc), use Photorec . O Photorec pode recuperar os formatos de arquivo mais comuns.

  • Você pode tentar o método "ext3 undelete" proposto anteriormente, mas você precisa estar confortável com a linha de comando, entender o funcionamento interno básico do linux, etc.

  • Se o seu arquivo é de algum formato especial, azar. Uma vez eu escrevi um programa Perl para escanear uma unidade em busca de alguns arquivos especiais, e funcionou muito bem; mas você precisará saber alguma programação para fazer isso, e ficar bastante à vontade com o linux também.

por 09.07.2010 / 15:41
4

Eu fiz isso há alguns anos atrás. Minha abordagem foi diretamente, sem tempo para perder, desmonte partição e, em seguida,

dd if=/dev/hda1 of=backup_image.ext3

para ter um arquivo de backup do estado exato da partição. Em seguida, você pode montar a partição novamente e continuar com os negócios como de costume ao procurar o arquivo excluído na imagem criada. A imagem provavelmente será MUITO grande, já que você precisa de todo o espaço "vazio", por isso pode ser um problema prático armazená-la.

Em seguida, foi só para realizar buscas chatas após trechos de texto que eu esperava estar em algum lugar na sopa de conteúdo da partição. Por exemplo. para encontrar arquivos .tex, eu corri

grep --binary-files=text -1000 "subsection" < backup_image.ext3 > latexfiles

que imprimiu um contexto grande em torno da frase "subseção" e salvou a saída em um arquivo para ser pesquisado manualmente. Imprimi um contexto tão grande, já que demorei tanto para pesquisar a imagem que preferia não fazer mais vezes do que o necessário.

Além disso, o comando strings foi útil na remoção de lixo binário da saída, mas se bem me lembro, ele também removeu todas as novas linhas, o que pode ser um problema.

Para encontrar arquivos binários da mesma forma, pode-se ter sucesso em encontrar um cabeçalho característico ou algo de um determinado arquivo, mas imagino que seja uma grande aventura.

Notas técnicas breves: há dificuldades técnicas na recuperação de disco e no Ext3 / 4. É uma coisa longa para explicar, mas brevemente (e inadequadamente): Ext3 / 4 remove os "marcadores" que informam ao SO onde os arquivos estão localizados no disco quando você os exclui. Os arquivos não são apagados, mas ninguém sabe onde no disco eles começam e terminam, e às vezes eles estão fragmentados em vários lugares. Alguns outros sistemas de arquivos apenas definem os status dos arquivos como "excluídos", mas mantêm os dados de localização. Então undelete não é mais difícil do que olhar para ponteiros de arquivo com este sinalizador (eles ainda devem estar disponíveis se não ocorrer muita atividade), e então esperar que seu conteúdo não tenha sido sobrescrito.

O que é melhor? Retórica, na minha opinião. O backup frequente é a resposta para todos esses problemas. Dados importantes sem um sistema de backup automatizado é um acidente esperando para acontecer, IMHO.

Anedota pessoal obrigatória: eu removeria foo\ foo* de ~ . Eu escrevi

rm -r foo<Tab>*

, que, infelizmente, como foo aparentemente era um link simbólico e o único arquivo correspondendo a isso, o shell foi transformado em

rm -r foo\ foo *

Pressionei Enter e fiquei sentado olhando o comando, que deveria ter levado um segundo no máximo. Depois de um pouco mais de tempo rm me perguntou se eu queria "remover o arquivo protegido contra gravação 'algo'". Rapidamente eu senti os calafrios e suavemente e muito controlado eu pressionei Ctrl+c . ~ Metade do meu ~ foi excluída, mas consegui recuperar tudo de volta através do grepping descrito acima e de alguns backups mais ou menos atuais. Eu tinha alguns dados pessoais muito valiosos (leia-se: consome tempo) e muito recentes em disco perdido, mas fiz backups quádruplos. Um desapareceu aqui, outro devido a falha do sistema na escola, outro foi corrupto, e no começo eu não consegui encontrar o quarto, já que por engano coloquei na pasta errada :-D. Não tinha rm -r ficou preso em um arquivo protegido contra gravação, o quarto teria sido comido desde que a pasta foi montada via sshfs no meu ~ . Eu sou muito mais cuidadosa com esse tipo de coisa desde então.

    
por 25.07.2011 / 03:23
4

Defina suas expectativas baixas. Se algo foi escrito sobre os dados "excluídos", você irá perdê-lo.

Eu fiz uma pequena recuperação e as melhores ferramentas que eu encontrei foram projetadas para determinados formatos. Por exemplo, 'photorec' foi ótimo quando eu queria recuperar dezenas de milhares de jpegs.

Recuva também me ajudou até agora e pode ser a sua melhor escolha. (É grátis, não seja enganado em pagar por seus anúncios)

No final do dia, se o que você perdeu é importante, desligue o drive e pare de gravar nele. Use todos os softwares de recuperação que você encontrar até recuperar seus dados ou deixar de valer a pena. Se é realmente importante, envie para profissionais a um preço alto.

Se você já teve sorte com uma ferramenta antes, tente novamente visto que você está familiarizado com ela. No final do dia, eles não devem estar gravando no disco e você pode usar o software até encontrar um que funcione.

    
por 19.04.2011 / 09:59
2

Aqui está um ótimo documento para você. Você encontrará várias dicas práticas.

BTW, existem dois grupos de pessoas:

  1. aqueles que fazem backups
  2. aqueles que farão backups

Parabéns, você acabou de se promover para o grupo 2.; -)

    
por 30.07.2013 / 09:55
2

Se você tiver um aplicativo aberto que esteja lendo o arquivo, como o VLC ou o LibreOffice, então esta excelente resposta da L & U.SO ajudou-me a sair desta confusão. Aqui está um método alternativo para fazendo o mesmo.

A idéia geral é encontrar o link em /proc/PID/fd/DESCRIPTOR_NUMBER e copiá-lo de volta ao local original. Use ps aux | grep APP_NAME para encontrar o PID e, em seguida, ls -la /proc/PID/fd/ para encontrar o DESCRIPTOR_NUMBER adequado.

    
por 24.05.2014 / 22:43
1

A resposta "correta" é assumir que não há um método para recuperar de forma confiável e, em vez disso, restaurar a partir de backups ou de um sistema clonado ou reinstalar.

TestDisk é uma ótima ferramenta, e há outras maneiras de salvar alguns dados da unidade física, dependendo do sistema de arquivos e da recente exclusão, mas o tempo e a dor envolvidos podem ser muito grandes, então MANTENHA BACKUPS (e também teste se eles são válidos e restauráveis)!

    
por 24.07.2011 / 17:23
1

Se não for sobrescrito por outros usuários, você tem sorte. Eu apaguei acidentalmente meu arquivo de origem do cpp e usei uma ferramenta chamada acima , que me ajudou a restaurar os restos de 60G cpp do disco . Finalmente, recuperei meu arquivo reunindo esses detritos pedaço por pedaço. Eu acho que ele analisa determinado padrão para o tipo de arquivo específico e atravessa todos os inodes no disco para recuperar arquivos! Apenas tente!

    
por 09.07.2018 / 20:57
0

Se acidentalmente você apagou o arquivo do Linux, então você pode usar este comando:

find /root -name "search text" -type f  -exec mv {} "/home" \;

em vez de search text , você pode colocar o nome do arquivo e pode especificar o diretório onde deseja restaurar no lugar de /home .

    
por 17.07.2014 / 14:52
0

Você pode tentar este script. Funciona muito bem e pretende ser usado no local de rm e im usando-o extensivamente agora.

link

Recursos:

  • destinado a ser usado no lugar de rm
  • lida com todos os argumentos que o rm pode aceitar
  • manipula as colisões de nomes de arquivos com os arquivos que já estão na lixeira
  • lida com alguns problemas de permissão automaticamente
  • se rm for chamado de qualquer outro script ou indiretamente, o comando do sistema 'rm' será usado automaticamente
  • mostra as mensagens de erro apropriadas, como aquelas que surgem em rm
por 15.05.2018 / 03:46
-2

Eu tive o mesmo problema na semana passada e tentei muitos programas, como debugfs, photorec, ext3grep e extundelete. O ext3grep foi o melhor programa para recuperar arquivos. A sintaxe é muito fácil:

ext3grep image.img --restore-all

ou:

ext3grep /dev/sda3 --restore-all --after date -d '2015-01-01 00:00:00' '+%s' --before 'date -d ‘2015-01-02 00:00:00’ ‘+%s’

Este vídeo mostra um mini tutorial que pode ajudá-lo.

    
por 19.10.2015 / 14:27