Recentemente, acidentalmente, fiz rm
um conjunto de arquivos e me fez pensar onde exatamente esses arquivos acabariam?
Ou seja, ao trabalhar com uma GUI, os arquivos excluídos vão para a Lixeira. Qual é o equivalente rm
e existe uma maneira de desfazer um rm
comando?
command-line
rm
trash
boehj
fonte
fonte
Respostas:
Em nenhum lugar, desapareceu. Bem, mais especificamente, o arquivo é desvinculado. Os dados ainda estão lá no disco, mas o link para ele é removido. Antes era possível recuperar os dados, mas hoje em dia os metadados são limpos e nada é recuperável.
Não há lixeira para
rm
, nem deveria haver. Se você precisar de uma lata de lixo, use uma interface de nível superior. Existe um utilitário de linha de comando notrash-cli
Ubuntu, mas na maioria das vezes os gerenciadores de arquivos da GUI como Nautilus ou Dolphin são usados para fornecer uma lata de lixo padrão. A lata de lixo é padrão em si. Os arquivos da Lixeira no Dolphin serão visíveis na Lixeira do Nautilus.Os arquivos geralmente são movidos para algum lugar como
~/.local/share/Trash/files/
quando estão no lixo. Orm
comando no UNIX / Linux é comparável aodel
DOS / Windows, que também exclui e não move arquivos para a Lixeira. Outra coisa a perceber é que mover um arquivo através de sistemas de arquivos como o seu disco USB a partir da unidade de disco rígido é realmente 1) uma cópia dos dados do arquivo seguida por 2) desvincular o arquivo original. Você não gostaria que seu lixo fosse preenchido com essas cópias extras.fonte
libtrash
mudar o comportamento da rm. Muitos scripts são usadosrm
para limpar arquivos e você não deseja que apareçam no Lixo. Eu recomendo usar um comando dedicado comotrash
notrash-cli
pacote. @pedro Devo acrescentar que uma vez criei um arquivo * no meu diretório pessoal. Eu tinha citado acidentalmente * quando não deveria criá-lo, então decidi removê-lo com o rm * nativamente. Quando percebi o que fiz, acabei rapidamente com o comando, mas ele já havia excluído vários arquivos no meu diretório pessoal.cp
, emv
, paracp -i
emv -i
quando estiver executando como root. Isso altera o comportamento padrão para que esses comandos sempre perguntem antes de substituir os arquivos existentes. Alguns administradores de sistema recomendaram remover especificamente esses aliases para que você não espere que esse comportamento possa ser letal quando em outro sistema que segue o comportamento padrão.Para ext3 / ext4, você pode tentar recuperar arquivos usando ferramentas como extundelete ou ext3grep , ou até mesmo mexer nas estruturas de baixo nível manualmente (não para os fracos de coração); para muitos sistemas de arquivos, você pode tentar procurar os blocos ainda não substituídos por certos padrões (por exemplo, magicrescue pode procurar por cabeçalhos JPEG, entre outras coisas). Observe que eles estão usando heurísticas para recuperar os arquivos dos metadados deixados para trás, de modo que a recuperação total não é garantida - é mais uma aposta de última chance (pois eles exigem que alguns traços dos arquivos permaneçam no diário e que os blocos ainda não foram substituídos).
Portanto, para todos os efeitos, os arquivos removidos
rm
desaparecem - você pode tentar a necromancia que essas ferramentas oferecem, mas não depende disso: essas são as ferramentas para tentar quando tudo mais falhar. É melhor desenterrar seus backups mais recentes (você fez backups, certo? Ah, bem, viva e aprenda ...).fonte
Em relação a desfazer os efeitos de
rm
:Como a maioria dos sistemas de arquivos remove apenas a referência aos dados e indica que os blocos estão livres, você pode tentar localizar a leitura dos dados diretamente do dispositivo. Com um pouco de sorte, os blocos que contêm seus arquivos não foram reivindicados por outra coisa.
Isso pressupõe que você tenha algo bastante singular para procurar, que você tem
root
no sistema e, suponho, reunir tudo que abranja mais de um bloco de sistema de arquivos (provavelmente 4k) pode acabar sendo bastante trabalhoso se o sistema de arquivos não gerenciar colocar o (s) arquivo (s) em blocos contíguos.Recuperei com êxito o conteúdo de alguns arquivos de texto sem formatação, executando strings no dispositivo em que o sistema de arquivos estava e usando
grep
procurando algo desses arquivos com um grande contexto (-C
). (E logo após esse incidente, a empresa decidiu gastar alguns recursos na implementação de backups)fonte
magicrescue
essa que tentam encontrar imagens ou sons por seus padrões distintos.Sempre que você exclui um arquivo usando o
rm
comando, os dados do arquivo nunca são excluídos. Em outras palavras, os blocos no sistema de arquivos que contêm dados ainda estão lá.O que acontece é que, quando você executa o
rm
comando, o sistema marca o inode pertencente a esse arquivo como não utilizado e os blocos de dados desse arquivo também como não utilizados (mas não eliminados). No entanto,ext3
zera a maioria dos campos no inode, quando um arquivo é excluído.Essa marcação normal de não utilizada é feita para a velocidade ... Caso contrário, para exclusão, levará mais tempo. É por isso que você deve ter notado que a exclusão de arquivos grandes é mais rápida (você pode recuperar os dados se esses blocos de dados não forem substituídos).
Mais informações: Estrutura do inode , como funciona a exclusão de arquivo
fonte
chattr +s
atributo ("shred"). Diz ao sistema de arquivos para substituir especificamente esse arquivo com zeros na exclusão. Apenas alguns sistemas de arquivos suportam esse atributo.Nos sistemas de arquivos no estilo Unix (inclusive no Linux), os arquivos não estão "em" nenhum lugar específico. Em vez disso, o sistema usa links físicos para apontar em partes o que equivale a um grande blob de dados. Portanto, ao criar um arquivo, você também cria seu primeiro hardlink: aquele que realmente reside no local em que você "salvou" o arquivo. Se você criar mais links físicos, até onde o sistema sabe, o arquivo realmente existe em vários locais ao mesmo tempo.
Quando você "exclui" um arquivo, normalmente você está realmente excluindo apenas o hardlink existente no local especificado. É por isso que a chamada do sistema para excluir arquivos é chamada
unlink()
. O sistema não excluirá o arquivo até que não haja mais links físicos. Mas uma vez que o último hardlink é destruído, os dados também.Então, para onde vão os arquivos que você exclui? Se ainda houver hardlinks, esses arquivos estarão onde estiverem os hardlinks que você não excluiu. Se não houver mais hardlinks, os arquivos desaparecerão.
fonte
Procure também em ~ / .snapshot se o arquivo foi removido recentemente.
fonte