2010-06-08 02:00:57 +0000 2010-06-08 02:00:57 +0000
65
65

Como recuperar um ficheiro removido em Linux?

Por acidente, usei o rm num ficheiro que não queria apagar. Existe alguma forma de o recuperar sob o Linux?

Respostas (15)

51
51
51
2010-06-08 02:04:42 +0000

Os passos seguintes são genéricos para recuperar ficheiros de texto.

  1. Primeiro use o comando de parede para dizer ao utilizador que o sistema está a descer num único modo de utilizador:

  2. Depois use o comando init 1 para levar o sistema para um único modo de utilizador:

  3. Utilizar o grep (modo tradicional UNIX) para recuperar ficheiros

  4. Próxima utilização do vi para ver ficheiro.txt.

Encontrado em http://www.cyberciti.biz/tips/linuxunix-recover-deleted-files.html

13
13
13
2010-07-09 06:27:42 +0000
  • Se é muito importante, tire o disco do computador e contrate uma empresa para o fazer por si.
  • Se é apenas muito importante, monte o disco apenas para leitura, copie toda a partição para um ficheiro usando dd e tente encontrar o ficheiro dentro dele (usando grep, ou um editor).

Editar: por vezes ddrescue funciona melhor que dd.

9
9
9
2010-07-09 06:29:12 +0000

Se o seu sistema de ficheiros é ext3 , utilize ext3grep .

8
8
8
2010-06-08 03:33:59 +0000

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

Existe um walkthrough para Linux . Note que funciona para ext2 , ext3 , e ext4 .

5
5
5
2011-07-25 01:23:05 +0000

Fi-lo há alguns anos. A minha abordagem foi directamente, sem tempo a perder, desmontar a partição e depois

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

para ter um ficheiro de backup do estado exacto da partição. Depois pode montar a partição novamente e continuar com o negócio como de costume, procurando o ficheiro apagado na sua imagem criada. A imagem será provavelmente MUITO grande uma vez que precisa de todo o espaço “vazio”, por isso pode ser um problema prático guardá-la.

Depois era apenas para fazer pesquisas aborrecidas depois de snippets de texto que esperava estar algures na sopa de conteúdo da partição. Por exemplo, para encontrar ficheiros .tex, corri

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

que imprimiram um grande contexto em torno da frase “subsecção” e guardaram a saída num ficheiro para ser pesquisado manualmente. Imprimi um contexto tão grande uma vez que demorou tanto tempo a pesquisar a imagem que preferia não o fazer mais vezes do que o necessário.

Também o comando strings foi útil na remoção do 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 ficheiros binários da mesma forma, pode-se ter sucesso em encontrar um cabeçalho característico ou algo de um determinado ficheiro, mas imagino que seja uma grande aventura.


Notas técnicas resumidas: existem dificuldades técnicas com a recuperação de disco e Ext3/4. É algo longo para explicar, mas breve (e inadequadamente): Ext3/4 remove os “marcadores” que indicam ao SO onde os ficheiros estão localizados no disco quando os elimina. Os ficheiros não são apagados, mas já ninguém sabe onde no disco eles começam e acabam, e por vezes até estão fragmentados em vários locais. Alguns outros sistemas de ficheiros apenas definem os estados dos ficheiros para “apagados”, mas mantêm os dados de localização. Depois, não é mais difícil de apagar do que olhar para os apontadores de ficheiros com esta bandeira (ainda devem estar disponíveis se não tiver ocorrido muita actividade), e depois esperar que o seu conteúdo não tenha sido substituído.

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


Anedota pessoal obrigatória: Eu ia remover foo\ foo* de ~. Escrevi

rm -r foo<Tab>*

, que infelizmente, uma vez que foo era aparentemente uma ligação simbólica e o único ficheiro que correspondia a isto, a concha feita em

rm -r foo\ foo *

Pressionei Enter e sentei-me ali a olhar para o comando, que deveria ter demorado um segundo no máximo. Após um pouco mais de tempo rm perguntou-me se eu queria “remover o ficheiro protegido contra escrita ‘alguma coisa’”. ~Metade do meu Ctrl+c foi apagado, mas consegui recuperar tudo o que tinha valor acima descrito e algumas cópias de segurança mais ou menos actuais. Eu tinha alguns dados de medição pessoalmente muito valiosos (leia-se: demorados) e muito recentes em disco que se perderam, mas eu tinha feito backups quádruplos. Um desaparecia aqui, outro devido a uma falha do sistema na escola, outro era corrupto, e no início não consegui encontrar o quarto, pois por engano tinha-o colocado na pasta errada :-D . Se o ~ não tivesse ficado preso num ficheiro protegido contra escrita, o quarto teria sido comido desde que essa pasta foi montada via sshfs no meu rm -r. Sou muito mais cuidadoso com esse tipo de coisas desde então.

5
5
5
2010-07-09 13:41:50 +0000
  • A única resposta correcta é: restaure o seu ficheiro a partir do backup. Todos devem ter uma cópia de segurança. Para arquivos realmente importantes, você deve ter dois backups. Não tem? Bem, que pena, aqui vai uma lição aprendida ( Desculpe soar duro, mas estou no armazenamento de dados, e as pessoas não fazem backup até perderem alguns dados importantes, isso é um dado adquirido. Então sim, você parece estúpido, mas quase todos os outros também ).

  • OK, você não tem backup. você deve parar usando o sistema de arquivos que continha o arquivo POR FAVOR. Qualquer actividade de escrita pode definitivamente canalizar os dados do ficheiro que may (apenas may) permanecem no disco.

  • se cometeu o trágico erro de utilizar apenas uma partição como sistema de ficheiros raiz e /home, isso significa que deve_ arrancar a partir de algum outro dispositivo. NOW.

  • se o seu ficheiro é de algum formato comum ( ficheiro Word, JPG, etc), use Photorec . O Photorec pode recuperar os formatos de ficheiro mais comuns.

  • Pode tentar o método “ext3 undelete” proposto anteriormente, mas precisa de estar confortável com a linha de comando, compreender o funcionamento interno básico do linux, etc.

  • Se o seu ficheiro é de algum formato especial, azar. Uma vez escrevi um programa em Perl para procurar alguns ficheiros especiais numa drive, e funcionou bastante bem; mas é preciso saber alguma programação para fazer isso, e estar bastante à vontade com o linux também.

5
5
5
2010-07-09 06:37:16 +0000

Se é o padrão rm , espero que você tenha um backup. O procedimento para recuperar um ficheiro eliminado seria diferente para cada sistema de ficheiros, se for possível fazê-lo de todo. O Linux não tem um “contentor de reciclagem” incorporado; uma vez apagado um ficheiro, ele desaparece.

De qualquer forma, vai querer desligar o computador – o mais rápido possível, pois continuar a correr o computador (mesmo para o desligar) provoca a gravação no disco e aumenta a hipótese de alguns blocos anteriormente ocupados pelo ficheiro serem substituídos. Depois de o ter feito, ou o coloca noutro computador, reinicie um live CD (certificando-se de que não monta o disco rígido a não ser que o monte apenas para leitura), ou remova o disco rígido e leve-o a um especialista em recuperação de dados.

4
4
4
2011-04-19 07:59:56 +0000

Defina as suas expectativas a um nível baixo. Se algo foi escrito sobre os dados “apagados”, perdê-los-á.

Fiz uma pequena quantidade de recuperação e as melhores ferramentas que encontrei foram muitas vezes concebidas para certos formatos. Por exemplo, o ‘photorec’ foi óptimo quando quis recuperar dezenas de milhares de jpegs. Recuva também já me ajudou antes e pode ser a vossa melhor escolha. (É grátis, não se deixe enganar pelos seus anúncios)

No final do dia, se o que perdeu é importante, desligue o disco e pare de escrever para ele. Use cada pedaço de software de recuperação que encontrar até recuperar os seus dados ou deixar de valer a pena. Se é realmente importante, envie-o para profissionais a um preço elevado.

Se já teve sorte com uma ferramenta antes, experimente-a novamente, visto que está familiarizado com ela. No final do dia, eles não devem estar a escrever no disco e por isso pode usar software até encontrar um que funcione.

2
2
2
2014-05-24 20:43:18 +0000

Se você tem uma aplicação aberta que está atualmente lendo o arquivo, como VLC ou LibreOffice, então esta fantástica resposta da L&U.SO me ajudou a sair desta confusão. Aqui está um método alternativo para fazer o mesmo.

A ideia geral é encontrar o link em /proc/PID/fd/DESCRIPTOR_NUMBER e copiá-lo de volta para a sua localização original. Use o ps aux | grep APP_NAME para encontrar o PID e depois o ls -la /proc/PID/fd/ para encontrar o DESCRIPTOR_NUMBER adequado.

1
1
1
2018-07-09 18:57:14 +0000

Se não for sobregravada por outros utilizadores, então tem sorte. Eu acidentalmente apaguei meu arquivo fonte cpp e usei uma ferramenta chamada foremost , que me ajudou a restaurar detritos de 60G cpp do disco. Finalmente, eu recuperei meu arquivo montando esses detritos peça por peça. Acho que ele verifica certos padrões para um tipo específico de arquivo e atravessa todos os inodes do disco para recuperar arquivos! Basta tentar!

1
1
1
2011-07-24 15:23:23 +0000

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

TestDisk é uma grande ferramenta, e há outras maneiras de poder salvar alguns dados da unidade física dependendo do sistema de arquivo e da rectidão de apagamento, mas o tempo e a dor envolvidos podem ser apenas demasiado grandes, então KEEP BACKUPS (e também testar que eles são válidos e restauráveis)!

1
1
1
2013-07-30 07:55:30 +0000

Aqui está um grande documento para si. Encontrará aí um monte de dicas práticas.

BTW, existem dois grupos de pessoas:

  1. aqueles que fazem backups
  2. aqueles que vão fazer backups

Parabéns, acabou de se promover ao grupo 2. ;-)

0
0
0
2014-07-17 12:52:30 +0000

Se acidentalmente tiver apagado o ficheiro do Linux, pode utilizar este comando:

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

no lugar de search text pode colocar o nome do ficheiro e pode especificar o directório onde pretende restaurar no lugar de /home.

0
0
0
2018-05-15 01:46:17 +0000

Pode experimentar este guião. Funciona bem e destina-se a ser usado no lugar do rm e im a ser usado extensivamente agora. https://github. com/nateshmbhat/safe-rm

Características :

  • destinado a ser usado no lugar de rm
  • lida com todos os argumentos que rm pode levar
  • lida com as colisões do nome do ficheiro com os ficheiros que já estão no lixo
  • lida com alguns problemas de permissão automaticamente
  • se rm é chamado a partir de qualquer outro script ou indirectamente então o comando ‘rm’ do sistema é usado automaticamente
  • mostra as mensagens de erro apropriadas como as que surgem em rm
-2
-2
-2
2015-10-19 12:27:52 +0000

Eu tive o mesmo problema na semana passada e tentei muitos programas, como debugfs, photorec, ext3grep e extundelete. ext3grep era o melhor programa para recuperar arquivos. O sintax é 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 o pode ajudar.