Arquivos deletados recuperados no Mac pela linha de comando

21

Eu acidentalmente excluí um arquivo executando:

rm -rf ./Desktop/myScript.sh

Acho que é possível recuperar o arquivo, porque o comando rm é removido temporariamente. Como posso recuperar o arquivo excluído no Mac OSX?

    
por cat_minhv0 14.09.2012 / 17:40

2 respostas

21

MacOS é um sistema operacional Unix e rm significa "adeus". A interface GUI permite mover um arquivo para a lixeira (que você pode recuperar), mas não foi isso que você fez. Se você tiver um backup (por exemplo, se o Time Machine estiver em execução), você será salvo.

Esclarecimento

Estritamente falando (como @ire_and_curses aponta), um rm simplesmente exclui a entrada de diretório para o arquivo, enquanto deixa os blocos de disco usados, intocados. Se você puder quiesce o sistema de arquivos no qual o arquivo foi, existem métodos avançados pelos quais você pode tentar redescobrir o conteúdo desses blocos. Existem também algumas ferramentas de recuperação que podem ser compradas para recuperar a perda. A questão central é que nada mais reutiliza qualquer um dos blocos de disco representados pelo seu arquivo.

O MacOS também possui um comando de remoção segura ( srm ) que sobrescreve um arquivo antes que ele seja unlink ed, tornando-o irrecuperável. Eu uso o termo unlink , pois esta é a chamada de sistema subjacente associada ao comando rm de um shell. Isso prepara o cenário para a próxima parte desta discussão, abaixo.

Sidenote

[Devo acrescentar que, mesmo que você grave um disco várias vezes, há maneiras de ler o que foi escrito uma dúzia ou mais de vezes antes. Para higienizar adequadamente um disco para descarte, é necessário um banho de ácido, um grande martelo e um triturador. ]

unlink ing um arquivo decrementa a contagem de links do inode do arquivo. Se esse valor chegar a zero, o arquivo será excluído do diretório do sistema de arquivos e seus blocos de disco serão liberados para reutilização. Isso só acontece quando os processos no têm o arquivo aberto. Geralmente é confuso para os administradores descobrirem que um sistema de arquivos está utilizando grandes quantidades de espaço que não podem ser explicadas pela simples soma de blocos de disco (com algo como du ). Na maioria das vezes, o motivo é que um arquivo aberto foi removido, de modo que não é mais representado em seu diretório. A razão é que os blocos de disco permanecem inutilizados até o último processo que usa o arquivo terminar.

Abrir um arquivo e imediatamente unlink ing é realmente uma prática comum para criar arquivos temporários e seguros. Ferramentas como lsof podem expor esses arquivos, caso contrário, se você procurar arquivos com uma contagem de links (NLINK) igual a zero.

No Unix e no Linux (dos quais o MacOS é um Unix de marca), um rm segue a filosofia Unix de "fazer" sem fanfarra se puder. Ou seja, se você tiver as permissões para remover um arquivo (ou seja, seu diretório permite a gravação), então rm fará exatamente o que você deseja. Você pode desejar criar um alias de shell rm='rm -i' que solicite sua confirmação antes de executar a operação. Usar a opção -f com rm substitui isso, se necessário. Um rm com alias é mais útil quando você faz glob como rm *.log . Ou seja, você tem a opção de pular um arquivo na lista.

    
por 14.09.2012 / 17:53
3

Dependendo do seu conteúdo, mas você pode usar diferentes softwares de terceiros para fazer isso, por exemplo:

e muito mais.

Você pode encontrar mais aplicativos digitando "recuperação de dados" na App Store.

A maneira mais avançada é inicializar o seu OSX no modo de recuperação (ou desmontar sua partição se puder) e procurá-la manualmente (se você se lembrar de algum texto específico do seu script).

Algum exemplo:

diskutil list
sudo cat /dev/disk0s2 | strings | grep -C20 "my_stuff"
    
por 18.12.2013 / 17:52