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.