Como recuperar arquivos que eu deletei agora executando rm *? [duplicado]

45

Por engano eu rodei rm * no diretório atual onde eu criei muitos arquivos de programas c. Eu estava trabalhando nisso desde a manhã. Agora eu não posso tirar novamente o tempo que passei desde manhã na criação dos arquivos. Por favor, diga como se recuperar. Eles não estão na lixeira também!

    
por Ravi 15.11.2013 / 09:56

2 respostas

49

Se um programa em execução ainda tiver o arquivo excluído aberto, você poderá recuperar o arquivo por meio do descritor de arquivo aberto em /proc/[pid]/fd/[num] . Para determinar se esse é o caso, você pode tentar o seguinte:

$ lsof | grep "/path/to/file"

Se o texto acima der saída do formulário:

progname 5383 user 22r REG 8,1 16791251 265368 /path/to/file               

anote o PID na segunda coluna e o número do descritor de arquivo na quarta coluna. Usando essas informações, você pode recuperar o arquivo emitindo o comando:

$ cp /proc/5383/fd/22 /path/to/restored/file

Se você não conseguir encontrar o arquivo com lsof , deverá remontar imediatamente o sistema de arquivos que hospedava o arquivo somente leitura:

$ mount -o remount,ro /dev/[partition]

ou desmontar completamente o sistema de arquivos:

$ umount /dev/[partition]

A razão para isso é que, assim que o arquivo tiver sido desvinculado e não houver links permanentes para o arquivo em questão, o sistema de arquivos subjacente poderá liberar os blocos alocados anteriormente para o arquivo excluído. blocos podem ser alocados para outro arquivo e seus conteúdos sobrescritos. Cessar quaisquer gravações adicionais no sistema de arquivos é, portanto, crítico no tempo, se qualquer recuperação for possível. Se o sistema de arquivos for o sistema de arquivos raiz ou não puder ser read-only ou desmontado por algum outro motivo, pode ser necessário encerrar o sistema (se possível) e continuar a recuperação de um ambiente ativo no qual você pode deixar o arquivo de destino sistema somente leitura.

Após as gravações no sistema de arquivos terem sido evitadas, não há pressa imediata para tentar a recuperação real. Para que seja seguro, talvez você queira fazer um backup do sistema de arquivos para executar a recuperação real em:

$ dd bs=4M if=/dev/[partition] of=/path/to/backup

As próximas etapas agora dependem do tipo de sistema de arquivos. Supondo uma instalação típica do Ubuntu, você provavelmente tem um sistema de arquivos ext3 ou ext4 . Nesse caso, você pode tentar a recuperação usando extundelete . A recuperação pode ser tentada com segurança no backup ou no dispositivo bruto, desde que não esteja montada (ou seja montada somente leitura). NÃO TENTE A RECUPERAÇÃO DE UM SISTEMA DE ARQUIVO AO VIVO . Isso provavelmente trará o sistema de arquivos para um estado inconsistente.

extundelete tentará restaurar quaisquer arquivos que encontrar em um subdiretório do diretório atual denominado RECOVERED_FILES . O uso típico para restaurar todos os arquivos excluídos de um backup seria:

$ extundelete /path/to/backup --restore-all 
    
por 15.11.2013 / 11:07
9

Sim, posso recuperar meus arquivos. Ainda não verifiquei se todos estão recuperados ou não, mas sim, alguns que verifiquei estão recuperados. Como há muitos arquivos que são recuperados através dessa ferramenta / comando, eu preciso de um padrão de texto nesses arquivos e ver quais são os meus. Os arquivos são recuperados com nomes diferentes (podem ser gerados pelo sistema). Eu tenho a solução de um fórum diferente e o comando é photorec

sudo photorec

Isso abrirá uma janela baseada em texto. Eu segui as instruções e sim é soberbo.

    
por 15.11.2013 / 16:51