Questão Desfazer um comando “rm -rf ~”?


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

rm -rf ~

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


109


origem


Qual sistema de arquivos? - Tarnay Kálmán
Claramente vocês não têm senso de humor. - Blomkvist
Embora isso não responda diretamente à sua pergunta, rm -rf "~" com aspas irá procurar por esse nome literal em vez de expandi-lo. Mas eu ficaria com medo de usar isso de qualquer maneira - eu usaria algo como ls ou cd primeiro para verificar se eu recebo o diretório correto ou excluo a pasta de um gerenciador de arquivos da GUI. Talvez primeiro renomeie o dir (mv "~" tilde), verifique e remova. - Henrik N
Para o futuro, não use rm interativamente na linha de comando. Use um utilitário como Lixo e você 1) não pode cometer o mesmo erro novamente e 2) não pode se acostumar com um pseudônimo pobre de shell que causará problemas. - Fred Nurk
@HenrikN: ./~ em vez de "~" faz o mesmo, mas também trabalha com outros nomes de arquivos problemáticos comuns, como aqueles que começam com traços e se parecem com opções. - Fred Nurk


Respostas:


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

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


145



Sua observação sobre backups é cruel e 100% objetiva. - Benjamin Bannier
OS X define a barra de como os backups devemos trabalho (especialmente com o Time Capsule). Vejo maketecheasier.com/… para sugestões de como obter algo parecido com o Ubuntu. - Thorbjørn Ravn Andersen
@ Thorbjørn Ravn Andersen - Faz, exceto quando o Time Machine tem um colapso nervoso. Eu tive a máquina do tempo me enlouquecendo duas vezes em seis meses. - Fake Name
O backup externo é ótimo e pode ser bastante acessível. eu uso Backblaze (Mac / Windows) a US $ 5 / computador / mês. Muitas pessoas parecem gostar Crashplan (Mac / Windows / Linux). - Henrik N
diariamente o que ???? - Luc M


Outros (como @ RiMMER, @Adãoe @James T) mencionamos 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 - DESLIGUE 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ê recuperou tudo que você pode de interesse - e  então - escreva os arquivos de volta na unidade original.


65



Mesmo o processo de desligamento pode gravar no disco rígido. Eu hesito em recomendar imediatamente desconectar seu computador, porque isso pode definitivamente fazer coisas Muito de pior, mas ... bem, dependendo da importância dos dados, você pode querer considerar isso. - BlueRaja - Danny Pflughoeft
Dependendo da unidade / sistema operacional / ponto de montagem, pode ser possível desmontar e / ou remontar readonly ao vivo sem desligar o computador, desligá-lo, etc. - Matthew Scharley
killall rm em vez de desligar. - Fred Nurk
Dependendo do tamanho do seu diretório de origem e do tamanho do seu disco rígido, as chances de escrever em excesso os setores livres que contêm seus dados são muito pequenas. - Mike Speed
Você pode recuperar arquivos de texto usando este método sem muita dificuldade (contanto que você tenha uma idéia aproximada do que está neles), mas arquivos binários são tão difíceis a ponto de serem basicamente impossíveis. - Satanicpuppy


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 de 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 iria, em vez disso, mudar o diretório para sua pasta pessoal, não o ~ pasta. Depois de passar por etapas de solução de problemas suficientes para aprender o verdadeiro comando, você precisaria cd no ~ pasta, então você pode pressionar a tecla de seta para cima para puxar o último comando do histórico e, em seguida, alterar cd para rm e então e só então tente apagar a pasta.

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


12



Olhe antes de pular e ls antes de você rm. - LawrenceC


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.


7





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

Se você tem ext3 ou ext4, você pode recuperar arquivo conhecidos usando photorec, que provavelmente acabará se recuperando mais do que você quer. O Photorec recupera arquivos sem as informações do nome do arquivo, portanto pode ser entediante passar pelos arquivos.


5





Se você tiver uma unidade externa grande o suficiente, você tem 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.


4



1 por mencionar que na maioria dos FSs registrados, mesmo uma montagem readonly pode gravar dados como parte das atividades do diário. - sleske


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.


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 louco 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. Teoricamente você poderia  rm -rI \~, no entanto, você pode ir um passo além.
    1. Primeiro, cd \~ para entrar nessa pasta, talvez até usar pwd para verificar se você chegou lá. Dez remover seu conteúdo enquanto você estiver lá. Mais uma vez, tenha cuidado, mas limpe a pasta com rf -rI * e se você precisar .* também.
    2. Agora volte com cd .. e remova o diretório com rmdir \~.

2