Como recuperar arquivos excluídos no Linux com testdisk

Publicados: 2022-01-29
Uma ilustração de uma janela de terminal em um computador Linux.
Fatmawati Achmad Zaenuri/Shutterstock

Você já apagou um arquivo e se arrependeu instantaneamente? Você precisa dele de volta, e rápido! Mas e se o arquivo for tão novo que ainda não foi copiado? Felizmente, há algo que você pode fazer sobre isso.

rm: Abreviação de Remorso?

É muito fácil usar o comando rm e encontrar-se olhando para uma janela de terminal com um profundo sentimento de arrependimento. Um pequeno erro com curingas e você pode eliminar muito mais do que pretendia.

O sistema de arquivos padrão do Linux, ext4 , usa inodes para armazenar dados sobre cada arquivo e uma tabela de inodes para acompanhar os inodes. O inode contém metadados sobre o arquivo, como seu nome, quem o possui, quais são as permissões e assim por diante.

Ele também contém pontos de entrada para links físicos que apontam para o arquivo. Cada arquivo tem pelo menos um link físico. Cada vez que você cria um novo link físico, a contagem de links físicos aumenta em um. Cada vez que você remove um link físico, a contagem de links físicos no inode é reduzida em um.

Quando você exclui um arquivo que o inode marcou como não utilizado (e pronto para reutilização), o último link físico é removido. Quando isso acontecer, o arquivo não aparecerá nas listagens de diretórios e não poderá ser usado ou acessado.

Propaganda

No entanto, os dados que compunham o conteúdo do arquivo ainda estão presentes no disco rígido. Se você pudesse corrigir o inode para que ele contivesse as informações corretas, o arquivo seria restaurado. Claro, isso só funcionaria se os dados que compõem o arquivo no disco rígido permanecessem intactos e não fossem substituídos.

Como alternativa, você pode criar um novo inode, copiar os dados sobreviventes do inode antigo e substituir os bits ausentes.

Essas são atividades não triviais. Normalmente, quando você exclui um arquivo por engano, é no pior momento possível. É sempre quando você precisa desse arquivo, e você precisa dele agora. Você não tem tempo para se sujar com editores de setor e outros utilitários. Além disso, se for um arquivo que você acabou de criar, provavelmente ainda não foi feito backup, portanto, eles também não o ajudarão.

É aqui que entra o testdisk . É fácil de usar e não requer conhecimento detalhado e de baixo nível do sistema de arquivos. Vamos dar uma olhada em como usá-lo!

RELACIONADO: Tudo o que você sempre quis saber sobre inodes no Linux

Instalando o disco de teste

Para instalar o testdisk no Ubuntu, use este comando:

 sudo apt-get install testdisk 

No Fedora, você precisa digitar:

 sudo dnf instalar testdisk 

No Manjaro, você deve usar o pacman :

 sudo pacman -Sy testdisk 

Usando o disco de teste

Embora seja executado em uma janela de terminal, o testdisk possui uma interface rudimentar. Você usa as teclas de seta para navegar e Enter para fazer uma seleção. Para manter as coisas organizadas, é melhor criar um diretório para os arquivos restaurados.

Digitamos o seguinte para criar um diretório chamado “restaurado” para nossos arquivos restaurados:

 mkdir restaurado 

Propaganda

Digitamos o seguinte para mudar para o novo diretório e iniciar o testdisk a partir daí:

 cd restaurado/ 

Temos que usar sudo com testdisk , então digitamos o seguinte:

 sudo testdisk 

A primeira pergunta que o testdisk faz é sobre o registro. Ele pode criar um novo arquivo de log, usar um existente ou não registrar nada. Não importa qual opção você escolha; isso não afetará a maneira como o testdisk opera.

Você pode simplesmente pressionar Enter para aceitar a opção destacada e criar um novo arquivo de log. Ele será criado no diretório a partir do qual você iniciou o testdisk . Quando você faz sua seleção, testdisk pergunta qual disco rígido contém o sistema de arquivos no qual você deseja trabalhar.

Ele lista os discos rígidos que pode encontrar, bem como os arquivos squashfs “/dev/loop”. Haverá um desses para cada aplicativo que você instalou em um snap de olhos. Eles são somente leitura, então você não deveria ter conseguido deletar nada desses sistemas de arquivos.

Há apenas um disco rígido físico neste computador de teste, então usamos a seta para baixo para destacar a opção “/dev/sda”. Em seguida, usamos a seta para a direita para selecionar “Continuar” e, em seguida, pressionamos Enter.

Propaganda

testdisk também precisa saber o tipo de partição. Apresenta um menu de opções, juntamente com o tipo de partição que é detectada automaticamente na parte inferior.

A menos que você tenha um bom motivo para não fazê-lo, destaque o tipo de partição que é detectada automaticamente e pressione Enter.

No menu de funções que aparece, realce “Avançado” e pressione Enter.

O menu de seleção de partição aparecerá.

Os arquivos que estamos procurando estão na partição do sistema de arquivos Linux. Temos apenas uma partição Linux em nosso disco rígido, mas você pode ter mais.

Selecione a partição em que seus arquivos estavam, use as teclas de seta para a esquerda e para a direita para selecionar “Lista” e pressione Enter. O menu de seleção de arquivo aparecerá.

Use as setas para cima e para baixo ou as teclas PgUp e PgDn para navegar na lista de arquivos e diretórios. Pressione a seta para a direita ou Enter para entrar em um diretório e a seta para a esquerda ou Esc para sair de um diretório.

Propaganda

Estamos procurando por arquivos que pertenciam a dave . Os arquivos de todas as contas de usuário estão no diretório “Home”. Assim, destacamos o diretório “Home” e, em seguida, podemos pressionar a seta para a direita ou Enter para entrar nesse diretório.

Todas as contas de usuário são listadas para nós. Destacamos dave e, em seguida, pressionamos a seta para a direita ou Enter para entrar nesse diretório.

Agora podemos ver os arquivos que pertencem à conta dave . As entradas em vermelho foram excluídas. Navegamos pelos arquivos e diretórios até localizarmos os arquivos que queremos recuperar.

Para recuperar um arquivo, basta realçá-lo e pressionar c (minúsculas).

A tela muda e diz para você escolher um destino para o arquivo recuperado. Como criamos um diretório chamado “Restored” e iniciamos o testdisk a partir dele, a primeira entrada na lista (.) é esse diretório. Para recuperar esse arquivo excluído para esse diretório, pressionamos C (maiúsculas).

Depois de fazer isso, você retornará à exibição de seleção de arquivo. Se você quiser recuperar mais arquivos, basta repetir o processo. Realce um arquivo excluído, pressione c (minúsculas) para copiá-lo e, em seguida, pressione C (maiúsculas) para recuperá-lo.

Trabalhando com arquivos restaurados

Depois de restaurar um arquivo, a árvore de diretórios em seu local original é reconstruída, o que é útil porque lembra onde no disco rígido o arquivo original costumava residir. Isso significa que, se você precisar copiá-lo de volta, saberá onde colocá-lo.

Propaganda

Se você recuperar vários arquivos de diferentes locais do sistema de arquivos que tenham o mesmo nome de arquivo, eles precisarão ser armazenados separadamente de qualquer maneira.

Você pode digitar o seguinte para ver o conteúdo do diretório “Restored”:

 ls

Se você pediu ao testdisk para criar um arquivo de log, ele estará no diretório “Restored”. Como nossos arquivos recuperados estavam localizados em “/home/dave”, eles foram copiados para nosso diretório “Restored”, aninhados em diretórios com o mesmo nome.

Podemos mudar para o diretório “dave” copiado usando cd . Certifique-se de não incluir uma barra inicial ( / ) no caminho – você deseja mudar para o “home” local, não para o sistema “/home”.

Digitamos o seguinte:

 cd casa/dave

Os arquivos recuperados estão nesse diretório, então digitamos:

 ls 

Propaganda

Vamos dar outra olhada nos arquivos recuperados usando a opção -l (lista longa):

ls -l

Como usamos o sudo para iniciar o testdisk , os arquivos recuperados foram restaurados com “root” como proprietário. Podemos alterar o proprietário de volta para “dave” usando chown :

 sudo chown dave.dave * 

Digitamos o seguinte para garantir que a propriedade correta tenha sido restaurada:

 ls -l 

testdisk: código para alívio

Essa sensação de alívio depois de recuperar um arquivo importante que, há pouco, parecia irrecuperavelmente perdido, é algo que você sempre apreciará.

É por isso que o testdisk é um utilitário tão útil. Depois de percorrer os menus e começar a restaurar os arquivos, é fácil cair em um ritmo de destaque, c, c, repetição.

RELACIONADO: Melhores laptops Linux para desenvolvedores e entusiastas