Excluí acidentalmente um arquivo executando:
rm -rf ./Desktop/myScript.sh
Eu acho que é possível recuperar o arquivo, porque o rm
comando é removido temporariamente. Como posso recuperar o arquivo excluído no Mac OSX?
Excluí acidentalmente um arquivo executando:
rm -rf ./Desktop/myScript.sh
Eu acho que é possível recuperar o arquivo, porque o rm
comando é removido temporariamente. Como posso recuperar o arquivo excluído no Mac OSX?
Respostas:
MacOS é um sistema operacional Unix e rm
significa "adeus". A interface da 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, o Time Machine em execução), será salvo.
Esclarecimento
Estritamente falando (como aponta @ire_and_curses), rm
basta excluir a entrada de diretório do arquivo, deixando intocados os blocos de disco que ele usou. Se você pudesse desativar o sistema de arquivos em que o arquivo estava, existem métodos avançados pelos quais você pode tentar descobrir novamente o conteúdo desses blocos. Existem também algumas ferramentas de recuperação que podem ser adquiridas para recuperar a perda. A questão central é que nada mais reutiliza nenhum 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 de ser unlink
editado, tornando-o irrecuperável. Eu uso o unlink
termo, já que esta é a chamada do sistema subjacente associada ao rm
comando de um shell . Isso prepara o cenário para a próxima parte desta discussão, abaixo.
Nota
[Devo me apressar a acrescentar que, mesmo que você sobrescreva um disco várias vezes, existem maneiras de ler o que foi gravado 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 uma trituradora. ]
unlink
Um arquivo diminui a contagem de links do inode do arquivo. Se esse valor atingir 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 acontece apenas quando nenhum processo tem o arquivo aberto. Muitas vezes, é confuso para os administradores descobrir que um sistema de arquivos está utilizando quantidades muito grandes de espaço que não podem ser explicadas pela simples soma de blocos de disco (com algo parecido du
). Na maioria das vezes, o motivo é que um arquivo aberto foi removido, para que não seja mais representado em seu diretório. O motivo é que os blocos de disco permanecem em uso até o último processo usando o arquivo terminar.
Abrir um arquivo e unlink
fazê-lo imediatamente é uma prática comum para criar arquivos temporários seguros. Ferramentas como essa lsof
podem expor esses arquivos invisíveis se você procurar arquivos com uma contagem de links (NLINK) igual a zero.
No Unix e Linux (do qual o MacOS é um Unix da marca), rm
segue-se a filosofia do Unix de "faça-o" sem alarde, se puder. Ou seja, se você tem permissão para remover um arquivo (ou seja, seu diretório permite a gravação), rm
faz exatamente o que você pede. Você pode criar um alias do shell rm='rm -i'
que solicita sua confirmação antes de executar a operação. Usar o -f
switch com rm
substituições que, se necessário. Um alias rm
é mais útil quando você glob
remove como rm *.log
. Ou seja, você tem a opção de pular um arquivo na lista.
Dependendo do seu conteúdo, mas você pode usar diferentes softwares de terceiros para fazer isso, por exemplo:
e muitos mais.
Você pode encontrar mais aplicativos digitando 'recuperação de dados' na App Store.
A maneira mais avançada é inicializar seu OSX no modo de recuperação (ou desmontar sua partição, se você puder) e procurá-lo 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"