Recupere arquivos apagados no Linux com o TestDisk: Guia completo!

Já se viu na situação de apagar um ficheiro e, no mesmo instante, desejar tê-lo de volta? A necessidade de recuperá-lo é urgente, especialmente se ele é recente e ainda não foi copiado. Felizmente, existe uma solução.

rm: Seria o mesmo que Remorso?

É surpreendentemente fácil usar o comando ‘rm’ e acabar encarando a linha de comandos com um profundo sentimento de arrependimento. Um pequeno deslize com caracteres curinga pode levar à eliminação de muito mais do que o pretendido.

O sistema de ficheiros padrão do Linux, ext4, emprega inodes para armazenar informações sobre cada ficheiro e uma tabela de inodes para gerir esses dados. O inode contém metadados cruciais, como o nome do ficheiro, o seu proprietário, as permissões associadas, entre outros.

Adicionalmente, o inode inclui pontos de entrada para links físicos que apontam para o ficheiro. Cada ficheiro possui pelo menos um link físico. A criação de um novo link físico incrementa a contagem de links físicos em um, enquanto a remoção de um link físico reduz essa contagem no inode.

Quando se elimina um ficheiro, o inode é marcado como não utilizado e pronto para reutilização. O último link físico é removido. Assim, o ficheiro desaparece das listagens de diretórios e torna-se inacessível.

No entanto, os dados que compõem o conteúdo do ficheiro permanecem no disco rígido. Se o inode fosse corrigido para conter as informações corretas, o ficheiro seria restaurado. Isso só é possível se os dados do ficheiro no disco rígido permanecerem intactos, sem substituição.

Outra opção seria criar um novo inode, copiar os dados existentes do inode antigo e complementar com as informações em falta.

Estas não são tarefas simples e, normalmente, quando se apaga um ficheiro por engano, é no pior momento possível. A necessidade de recuperar o ficheiro é imediata. Não há tempo para se aventurar em editores de setores ou ferramentas similares. Além disso, se o ficheiro for recente, é provável que não haja um backup disponível.

É neste cenário que o testdisk se destaca. Esta ferramenta é fácil de usar e não requer um conhecimento profundo do sistema de ficheiros. Vamos explorar como utilizá-la!

Instalação do testdisk

Para instalar o testdisk no Ubuntu, execute o seguinte comando:

sudo apt-get install testdisk

No Fedora, utilize o comando:

sudo dnf install testdisk

No Manjaro, use o pacman:

sudo pacman -Sy testdisk

Utilização do testdisk

O testdisk opera numa janela de terminal, mas possui uma interface intuitiva. As teclas de seta servem para navegar e a tecla Enter para selecionar. Para organização, é recomendável criar um diretório específico para os ficheiros recuperados.

Para criar um diretório chamado “restaurado” para os ficheiros recuperados, execute:

mkdir restored

Para entrar no diretório criado e iniciar o testdisk, execute os seguintes comandos:

cd restored/

É necessário usar o sudo com o testdisk, então, execute:

sudo testdisk

Inicialmente, o testdisk perguntará sobre o registro. Você pode criar um novo ficheiro de log, usar um já existente ou não registrar nada. A sua escolha não afetará o funcionamento do testdisk.

Pressione Enter para aceitar a opção destacada e criar um novo ficheiro de log. Ele será criado no diretório de onde você iniciou o testdisk. Após a seleção, o testdisk perguntará qual disco rígido contém o sistema de ficheiros no qual deseja trabalhar.

O programa listará os discos rígidos encontrados, bem como os arquivos squashfs “/dev/loop”. Haverá um desses para cada aplicativo que você instalou com o snap. Esses ficheiros são apenas para leitura, então, você não deve ter conseguido eliminar nada desses sistemas de ficheiros.

No exemplo de teste, há apenas um disco rígido físico, selecione a opção “/dev/sda” usando a seta para baixo. Em seguida, selecione “Continuar” com a seta para a direita e pressione Enter.

O testdisk também precisa saber o tipo de partição. Ele apresentará um menu de opções, com o tipo de partição detectado automaticamente na parte inferior.

A menos que haja um motivo válido para não o fazer, selecione o tipo de partição que foi detetado automaticamente e pressione Enter.

No menu de funções apresentado, selecione “Avançado” e pressione Enter.

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

Os ficheiros que procura estão na partição do sistema de ficheiros Linux. Pode ter múltiplas partições Linux, embora no exemplo exista apenas uma. Selecione a partição onde estavam os ficheiros, use as setas para a esquerda e direita para selecionar “Lista” e pressione Enter. O menu de seleção de ficheiros surgirá.

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

No caso de exemplo, procura-se os ficheiros do utilizador ‘dave’. Os ficheiros de todos os utilizadores estão no diretório “Home”. Selecione o diretório “Home” e pressione a seta para a direita ou Enter para aceder ao mesmo.

Todas as contas de utilizador serão listadas. Selecione ‘dave’ e pressione a seta para a direita ou Enter para aceder ao diretório.

Serão exibidos os ficheiros associados à conta ‘dave’. As entradas a vermelho são as que foram eliminadas. Navegue até encontrar os ficheiros que pretende recuperar.

Para recuperar um ficheiro, selecione-o e pressione ‘c’ (minúscula).

A tela mudará, solicitando a seleção de um destino para o ficheiro recuperado. Como o diretório “Restored” foi criado e o testdisk foi iniciado a partir dele, a primeira entrada da lista (.) corresponde a este diretório. Para recuperar o ficheiro eliminado para este diretório, pressione ‘C’ (maiúscula).

Após este passo, regressará à tela de seleção de ficheiros. Se desejar recuperar mais ficheiros, basta repetir o processo: selecione um ficheiro eliminado, pressione ‘c’ (minúscula) para copiá-lo e depois ‘C’ (maiúscula) para recuperá-lo.

Manipulação de Ficheiros Recuperados

Após a restauração, a estrutura de diretórios original do ficheiro é recriada, indicando onde este se encontrava anteriormente no disco rígido. Isso facilita a sua recolocação na localização original.

Se recuperar vários ficheiros com o mesmo nome de diferentes partes do sistema, estes precisarão ser armazenados separadamente.

Para ver o conteúdo do diretório “Restored”, execute o seguinte comando:

ls

Se tiver solicitado a criação de um ficheiro de log, este estará também no diretório “Restored”. Como os ficheiros recuperados estavam localizados em “/home/dave”, eles foram copiados para o diretório “Restored”, dentro de subdiretórios com os mesmos nomes.

Pode entrar no diretório “dave” copiado usando ‘cd’. Certifique-se de não incluir uma barra inicial (/) no caminho, pois pretende entrar no diretório “home” local, não no “/home” do sistema.

Execute o comando:

cd home/dave

Os ficheiros recuperados estão neste diretório, execute:

ls

Para obter uma visão mais detalhada dos ficheiros, use a opção -l (lista longa):

ls -l

Como o testdisk foi iniciado com ‘sudo’, os ficheiros foram recuperados com o proprietário definido como ‘root’. Pode alterar o proprietário para ‘dave’ usando ‘chown’:

sudo chown dave.dave *

Para confirmar se a propriedade foi restaurada corretamente, execute:

ls -l

testdisk: Uma Ferramenta de Alívio

A sensação de alívio ao recuperar um ficheiro importante que parecia perdido para sempre é algo que se valoriza muito. O testdisk é uma ferramenta valiosa que permite esta recuperação. Após se familiarizar com os menus, a sequência de seleções, ‘c’, ‘C’ torna-se fácil e repetitiva.