Desfaz um comando “rm -rf ~”?

109

Eu tinha uma pasta que eu não queria nomear '~', então na linha de comando eu digitei

rm -rf ~

e acidentalmente excluiu minha pasta pessoal (desde que resolvido para / home / username). Existe algum caminho de volta ou eu basicamente preciso recriar a conta do zero?

    
por Chris 05.05.2011 / 20:30

12 respostas

145

Em geral, não há um caminho fácil de volta.

Você pode restaurar a partir do backup diário.

    
por 05.05.2011 / 20:34
65

Outros (como @RiMMER , @Adam e @ James T ) mencionaram que, para a maioria dos sistemas de arquivos, é possível recuperar a maioria ou todos os seus dados (talvez sem nomes de arquivos), porque os dados não são realmente zerados, apenas removidos da tabela de arquivos. Isso não é verdade apenas no Linux - o mesmo acontece com o Windows e o Mac.

No entanto, ninguém mencionou a coisa mais importante - DESLIGAR O SEU COMPUTADOR. AGORA. .

Muitos programas - incluindo o navegador da Internet que você está usando no momento - armazenam dados em cache no disco rígido, e praticamente tudo que você faz pode fazer com que o computador redimensione / grave no arquivo de troca. Ambas as coisas vão escrever em setores livres no disco rígido, potencialmente sobrescrevendo seus dados preciosos.

Assim, desligue o computador, retire o disco rígido e coloque-o em outro computador. Monte o disco rígido como somente leitura e recupere os arquivos em um disco rígido separado. Quando você recuperar tudo que puder de interesse - e somente -, grave os arquivos de volta na unidade original.

    
por 06.05.2011 / 04:20
12

Eu acredito que todo usuário do linux em um ponto no tempo deve aprender esta lição dolorosa em primeira mão antes de realmente aprender a importância dos backups, bem como prestar atenção aos detalhes e ter cuidado.

Por exemplo, se você estiver excluindo arquivos com aparência estranha, poderá primeiro executar comandos nesse arquivo estranho que não tenham efeitos colaterais e que não façam alterações em seus dados. Por exemplo, você correu

cd ~

antes de tentar excluir a pasta, você teria visto que, em vez disso, mudaria o diretório para sua pasta pessoal, não a pasta ~ . Depois de passar por etapas de solução de problemas suficientes para saber o verdadeiro comando, será necessário cd na pasta ~ , então você pode pressionar a tecla de seta para cima para extrair o último comando do histórico e alterar cd to rm e então e somente então tentam deletar a pasta.

Sugiro seguir etapas como essa antes de executar qualquer ação permanente. Não é permanente ou infalível, mas você tem uma chance muito maior de evitar aqueles momentos de oops se você tomar esse grau de cuidado ao realizar ações que tenham efeitos colaterais.

    
por 06.05.2011 / 04:41
7

Se você estiver usando o sistema de arquivos ext3, ext3grep é seu novo melhor amigo. Um bom tutorial (entre muitos outros) sobre o uso do ext3grep pode ser encontrado aqui .

    
por 05.05.2011 / 21:00
5

Você pode tentar usar testdisk para recuperar arquivos individuais . Isso funciona apenas em ext2 e NTFS (mas ainda vale a pena tentar).

Se você tiver ext3 ou ext4, poderá recuperar arquivo conhecido usando photorec , que provavelmente acabará se recuperando mais do que você deseja. O Photorec recupera arquivos sem as informações do nome do arquivo, por isso pode ser entediante passar pelos arquivos.

    
por 05.05.2011 / 20:49
4

Se você tiver uma unidade externa grande o suficiente, terá outra opção possivelmente mais segura. Você precisará de espaço suficiente para armazenar toda a partição inicial, incluindo espaço livre.

Inicialize a partir de um CD e não monte a unidade inicial. Monte a unidade externa. dd a partição da unidade base em um arquivo na unidade externa. montar o arquivo como um dispositivo de loopback faça o seu trabalho de undeleting nesta imagem, com a certeza de que você não pode causar nenhum dano ao seu sistema de arquivos original. Dependendo do sistema de arquivos, pode haver muitas coisas para tentar, algumas delas potencialmente destrutivas.

Isso me salvou uma vez com uma versão beta do Reiser4 quando eu não sabia o que ele faria, mesmo se eu montasse apenas para leitura. Eu li em algum lugar no momento em que o diário escreve ainda era possível.

Também é uma boa técnica para salvar dados de uma unidade prestes a morrer.

    
por 06.05.2011 / 16:31
2

Existem técnicas para recuperar arquivos inspecionando os inodes que não foram reciclados. Quanto mais dados você gravar no sistema de arquivos após a exclusão, menor será a probabilidade de recuperar seus dados. A melhor estratégia para a recuperação de uma exclusão acidental de dados é restaurar a partir do backup.

    
por 05.05.2011 / 20:46
2

Sinto muito pelos seus dados. Todo mundo já falou sobre como lidar com seu problema de dados, mas aqui estão algumas informações sobre como você pode lidar da próxima vez que vir uma pasta chamada ~ .

  1. Encontre quem criou e certifique-se de que nunca mais o façam.
  2. Não use -rf ou qualquer argumento poderoso e maluco para fazer a exclusão. Em vez disso, leve-o bem e devagar e certifique-se de ver o que está acontecendo. É possível inserir o til sem que ele se expanda para o diretório inicial, escapando dele no shell. Em teoria, você poderia rm -rI \~ , mas você pode ir um passo além.
    1. Primeiro, cd \~ para entrar nessa pasta, talvez até use pwd para verificar se você chegou lá. Dez remover seu conteúdo enquanto você estiver lá. Novamente, tenha cuidado, mas limpe a pasta com rf -rI * e se você precisar obter .* também.
    2. Agora, volte para cima com cd .. e remova o diretório com rmdir \~ .
por 07.05.2011 / 20:27
1

Eu apenas cd .snapshot e restaurar os arquivos. Mas, eu faço isso no trabalho e não tenho idéia de como o diretório .snapshot vem. Eu pensei que talvez fosse um recurso do Linux.

    
por 06.05.2011 / 09:04
1
alias rm="rm -i"

Supondo que você esteja usando o shell Bash (coloque isso no seu arquivo .bashrc para que ele persista para novos shells que você abrir).

Isto deve resultar em rm pedindo para você confirmar o que você quer excluir, o que é legal especialmente quando você está fazendo -rf, mas também expande '~' para o caminho completo para o seu diretório home no prompt, que deve lhe dar uma pista de que você não está excluindo um arquivo '~', mas na verdade o seu homedir.

$ rm -rf ~
rm: examine files in directory /nas/users/u12345/unix (yes/no)? n

Isso não é tecnicamente uma resposta para sua pergunta, mas pode ajudá-lo a evitar esse problema no futuro.

EDIT: Algumas pessoas podem desencorajá-lo de usar esta técnica, uma vez que o torna menos cuidadoso com o comando "rm". Na minha experiência, isso está longe da verdade. Na realidade, o efeito do alias é desencorajá-lo de usar "rm -rf" - como você sabe, resultará em muitos prompts que você não deseja responder - e para obter um prompt "rm -rf" "você precisa deliberadamente se referir ao comando rm como / bin / rm (ou qualquer outro). Isso leva a um uso muito mais consciente e deliberado do comando "rm" em geral - como sempre é necessário preceder o uso de rm com uma escolha mental de "rm ou / bin / rm" - no seu servidor e em qualquer outro que acontecer estar logado em. E um mundo onde todos pensassem antes de usar rm seria realmente mais seguro!

    
por 06.05.2011 / 07:30
0

Ferramentas de recuperação - Linha de comando:

Ferramentas de recuperação - Gui:

Infos:

Na minha experiência pessoal recebo meus dados usando o "UFS Explorer" e o photorec

(1) = Não é open source, não é livre

(2) = Não é open source, grátis

(3) = Código aberto e livre

(4) = Tenha suporte ao ntfs

(5) = Possui recurso de estrutura de diretórios

    
por 10.06.2018 / 06:22
-3

rm é para sempre.

Embora isso não o ajude agora, você poderia no futuro não usar rm ou realmente forçar a si mesmo, adicionar um script encontrado anteriormente em seu caminho chamado rm que move os arquivos para uma pasta de lixo que você limpa tempo (permitindo que você cometa erros e não seja SOL).

    
por 06.05.2011 / 02:07

Tags