Por acidente, usei rm
um arquivo que não queria excluir. Existe uma maneira de recuperá-lo no Linux?
Por acidente, usei rm
um arquivo que não queria excluir. Existe uma maneira de recuperá-lo no Linux?
Respostas:
A seguir, são etapas genéricas para recuperar arquivos de texto.
Primeiro, use o comando wall para informar ao usuário que o sistema está inoperante em um único modo de usuário:
# wall
System is going down to .... please save your work.
Pressione CTRL + D para enviar mensagem.
Em seguida, use o comando init 1 para levar o sistema para um modo de usuário único:
# init 1
Usando grep (maneira tradicional do UNIX) para recuperar arquivos
Use a seguinte sintaxe grep:
grep -b 'search-text' /dev/partition > file.txt
OU
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 começando com a palavra "nixCraft" em / dev / sda1, tente o seguinte comando:
# grep -i -a -B10 -A100 'nixCraft' /dev/sda1 > file.txt
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, tente o comando recuperar.
Encontrado em http://www.cyberciti.biz/tips/linuxunix-recover-deleted-files.html
init 1
, mate manualmente todos os daemons do sistema, exceto sshd
. Também acho que, neste ponto, você deve remontar todos os sistemas de arquivos RO e salvar em tmpfs (assumindo que seus arquivos temporários cabem no RAM) para evitar sobrescrever os arquivos com os dados temporários. Obviamente, você precisará copiá-lo em outro lugar mais tarde, em um servidor remoto ou de volta aos sistemas de arquivos locais após remontá-los RW.
dd
e tente encontrar o arquivo dentro dele (usando grep
ou um editor).Edit: às vezes ddrescue
funciona melhor do que dd
.
O Testdisk possui uma opção de exclusão que deve funcionar com o Linux.
Há uma explicação passo a passo para o Linux . Observe que ele funciona para ext2 , ext3 e ext4 .
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, que pena, aqui está uma lição aprendida (desculpe por parecer duro, mas eu estou no armazenamento de dados e as pessoas não fazem backup até perderem alguns dados importantes, isso é um fato dado. Então, sim, você parece estúpido, mas assim como quase todo mundo).
OK, você não tem backup. você deve parar de usar o sistema de arquivos que continha o arquivo AGORA . Qualquer atividade de gravação pode definitivamente otimizar os dados do arquivo que podem (somente podem ) permanecer no disco.
se você cometeu o erro trágico ao usar apenas uma partição como sistema de arquivos raiz e / home, isso significa que você deve inicializar a partir de outro dispositivo. AGORA .
Se o seu arquivo tiver algum formato comum (arquivo do Word, JPG, etc.), use o Photorec . O Photorec pode recuperar os formatos de arquivo mais comuns.
Você pode tentar o método "ext3 undelete" proposto anteriormente, mas precisa se sentir confortável com a linha de comando, entender o funcionamento interno básico do linux, etc.
Se o seu arquivo tiver algum formato especial, azar. Certa vez, escrevi um programa Perl para verificar alguns arquivos especiais em uma unidade e funcionou muito bem; mas você precisará conhecer alguma programação para fazer isso e também ficar à vontade com o linux.
Eu fiz isso alguns anos atrás. Minha abordagem foi diretamente, sem tempo a perder, desmontar partições e depois
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 normalmente, enquanto procura o arquivo excluído na sua imagem criada. A imagem provavelmente será MUITO grande, já que você precisa de todo o espaço "vazio"; portanto, pode ser um problema prático armazená-la.
Depois, era apenas para realizar pesquisas chatas após trechos de texto que eu esperava estar em algum lugar na sopa do conteúdo da partição. Por exemplo, para encontrar arquivos .tex, corri
grep --binary-files=text -1000 "subsection" < backup_image.ext3 > latexfiles
que imprimiu um grande contexto em torno da frase "subseção" e salvou a saída em um arquivo a ser pesquisado manualmente. Imprimi um contexto tão amplo, pois demorou tanto tempo para pesquisar na imagem que prefiro não fazê-lo mais vezes do que o necessário.
Além disso, o comando strings
foi útil para remover o lixo binário da saída, mas, se bem me lembro, também retirou todas as novas linhas, o que poderia ser um problema.
Para encontrar arquivos binários da mesma maneira, pode-se ter sucesso em encontrar um cabeçalho característico ou algo de um determinado arquivo, mas imagino que seja uma grande aventura.
Breves notas técnicas: existem dificuldades técnicas com a recuperação de disco e o Ext3 / 4. É uma coisa longa a explicar, mas brevemente (e inadequadamente): o Ext3 / 4 remove os "marcadores" que informam ao sistema operacional onde os arquivos estão localizados no disco quando você os exclui. Os arquivos não são limpos, mas ninguém sabe mais onde eles começam e terminam no disco e, às vezes, eles são fragmentados em vários lugares. Alguns outros sistemas de arquivos apenas definem o status dos arquivos como "excluídos", mas mantêm os dados do local. A remoção da exclusão não é mais difícil do que procurar por ponteiros de arquivo com esse sinalizador (eles ainda devem estar disponíveis se não houver muita atividade) e, em seguida, esperar que seu conteúdo não tenha sido substituído.
O que e melhor? Retórica, na minha opinião. O backup frequente é a resposta para todos esses problemas. Dados importantes sem um sistema de backup automatizado são um acidente esperando para acontecer, IMHO.
Obrigatória anedota pessoal: Eu estava indo para remover foo\ foo*
a partir ~
. eu escrevi
rm -r foo<Tab>*
, que, infelizmente, como foo
aparentemente era um link simbólico e o único arquivo correspondente a isso, o shell transformado em
rm -r foo\ foo *
Apertei Enter e fiquei lá olhando para o comando, que deveria levar um segundo no máximo. Depois de um tempo mais longo, rm
perguntei-me se eu queria "remover o arquivo protegido contra gravação 'alguma coisa'". Muito rapidamente senti os calafrios e, com suavidade e muito controle, pressionei Ctrl+c
. ~ Metade do meu ~
foi excluído, mas consegui recuperar tudo de valor através do grepping descrito acima e alguns backups mais ou menos atuais. Eu tinha pessoalmente alguns dados de medição muito valiosos (leia-se: demorados) e muito recentes em disco que foram perdidos, mas fiz backups quádruplos. Um desapareceu aqui, outro devido à interrupção do sistema na escola, outro estava corrompido e, a princípio, não consegui encontrar o quarto, já que por engano o coloquei na pasta errada :-D. Não tinharm -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 ~
. Sou muito mais cuidadoso com esse tipo de coisa desde então.
Se for a 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 for possível. O Linux não possui uma "lixeira" incorporada; depois que você exclui um arquivo, tudo acaba.
Seja como for, desconecte o computador - o mais rápido possível, pois continuar executando o computador (mesmo para desligá-lo) causa gravações no disco e aumenta a chance de alguns blocos anteriormente ocupados pelo computador. O arquivo será substituído. Depois de fazer isso, coloque-o em outro computador, reinicie um CD ativo (certifique-se de não montar a unidade, a menos que você monte somente leitura) ou remova o disco rígido e leve-o a um especialista em recuperação de dados.
Defina suas expectativas baixas. Se alguma coisa foi escrita sobre os dados 'excluídos', você a perderá.
Fiz uma pequena recuperação e as melhores ferramentas que 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 antes e agora pode ser sua melhor escolha. (É grátis, não se deixe enganar por pagar pelos anúncios deles)
No final do dia, se o que você perdeu for importante, desligue a unidade e pare de gravar nela. Use todos os softwares de recuperação que encontrar até recuperar os dados ou deixar de valer a pena. Se for realmente importante, envie para profissionais a um preço alto.
Se você já teve sorte com uma ferramenta antes, tente novamente, pois está familiarizado com ela. No final do dia, eles não devem ser gravados em disco e, portanto, você pode usar o software até encontrar um que funcione.
Aqui está um ótimo documento para você. Você encontrará uma série de dicas práticas lá.
BTW, existem dois grupos de pessoas:
Parabéns, você acabou de se promover para o grupo 2. ;-)
Se você tem um aplicativo aberto que está lendo o arquivo, como o VLC ou o LibreOffice, essa resposta fantástica de L & U.SO me ajudou a sair dessa bagunça. Aqui está um método alternativo para fazer o mesmo.
A idéia geral é encontrar o link /proc/PID/fd/DESCRIPTOR_NUMBER
e copiá-lo de volta ao seu 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.
A resposta "correta" é assumir que não existe um método para se recuperar com segurança e, em vez disso, restaurar a partir de backups ou de um sistema clonado ou reinstalar.
O TestDisk é uma ótima ferramenta, e existem outras maneiras de recuperar alguns dados da unidade física, dependendo do sistema de arquivos e da repetição da exclusão, mas o tempo e a dor envolvidos podem ser grandes demais, portanto, MANTENHA OS BACKUPS (e também teste que eles são válidos e restauráveis)!
Se não for substituído por outros usuários, você terá sorte. Apaguei acidentalmente meu arquivo de origem cpp e usei uma ferramenta chamada principal , que me ajudou a restaurar restos de 60G cpp do disco. Finalmente, recuperei meu arquivo reunindo esses detritos, peça por peça. Eu acho que ele verifica certo padrão para o tipo de arquivo específico e percorre todos os inodes no disco para recuperar arquivos! Apenas tente!
Se acidentalmente você excluiu o arquivo do Linux, pode usar este comando:
find /root -name "search text" -type f -exec mv {} "/home" \;
no lugar de search text
você pode colocar o nome do arquivo e pode especificar o diretório onde deseja restaurar no lugar de /home
.
Você pode tentar esse script. Funciona muito bem e deve ser usado no lugar do rm e estou usando-o extensivamente agora.
https://github.com/nateshmbhat/safe-rm
rm
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.
rm
é um comando UNIX / Linux "perigoso" (lido$ man rm
). Use-o com extrema cautela . Com isso dito, é uma maneira rápida de excluir arquivos dos quais você tem certeza. Os ambientes modernos de desktop Linux e Unix fornecem uma solução de "Lixeira" , para que o usuário possa recuperar facilmente arquivos excluídos acidentalmente.