{"id":51,"date":"2010-12-05T19:40:00","date_gmt":"2010-12-05T19:40:00","guid":{"rendered":"http:\/\/artigos.marcomapa.com\/?p=51"},"modified":"2011-09-11T19:23:53","modified_gmt":"2011-09-11T19:23:53","slug":"como-recuperar-arquivos-apagados-no-linux","status":"publish","type":"post","link":"https:\/\/marcomapa.com\/artigos\/como-recuperar-arquivos-apagados-no-linux\/","title":{"rendered":"Como recuperar arquivos apagados no Linux"},"content":{"rendered":"<p>Quase todo mundo j\u00e1 passou por isso. Na hora de mover um arquivo, digitamos errado e sai algo assim:<\/p>\n<p>rm ~\/temp\/fotos_casamento\/* ~\/Fotos\/casamento<\/p>\n<p>\u00c9 claro que a ideia era usar o comando \"mv\" para mover os arquivos, e n\u00e3o o \"rm\", que os remove. Voc\u00ea deve estar se perguntando, \"por que diabos os desenvolvedores do UNIX deram nomes t\u00e3o parecidos para esses comandos?\"<\/p>\n<p>Mas agora j\u00e1 foi... ser\u00e1 que existe alguma chance de conseguir os documentos de volta?<\/p>\n<p>De acordo com o FAQ do ext3, n\u00e3o \u00e9 poss\u00edvel restaurar arquivos exclu\u00eddos em um sistema de arquivos ext3: \"Para garantir que o ext3 possa retomar uma quebra de v\u00ednculo com seguran\u00e7a ap\u00f3s um travamento do sistema, ele 'zera' os ponteiros de blocos do inode, enquanto o ext2 apenas marca esses blocos como n\u00e3o utilizados e marca o inode como exclu\u00eddo, deixando os ponteiros de bloco de lado. Sua \u00fanica chance \u00e9 usar o grep para encontrar partes dos arquivos exclu\u00eddos e torcer.\"<\/p>\n<p>N\u00e3o empolgou muito, empolgou?<\/p>\n<p>Acontece que muita gente destr\u00f3i dados acidentalmente, ent\u00e3o acabaram surgindo algumas solu\u00e7\u00f5es para tentar resolver isso. A primeira coisa a fazer quando se exclui um arquivo acidentalmente \u00e9 verificar se algum programa ainda est\u00e1 fazendo uso dele. Por exemplo, se voc\u00ea estiver assistindo ao v\u00eddeo \"aniversario_das_criancas.mpg\" no MPlayer e o arquivo for apagado, o MPlayer ainda tem um link para o arquivo. Este comando procura arquivos abertos e exibe os resultados:<\/p>\n<p>lsof <br \/>grep aniversario_das_criancas.mpg<\/p>\n<p>O comando retorna o nome do programa que est\u00e1 com o arquivo aberto (no caso, o MPlayer), o ID do processo do programa, o nome do usu\u00e1rio que est\u00e1 acessando o arquivo e o n\u00famero descritor desse arquivo. No meu caso, a sa\u00edda foi esta:<\/p>\n<p>mplayer 11297 jesse 3r REG 8,3 4552773 16793772 aniversario_das_criancas.mpg<\/p>\n<p>O que interessa mesmo \u00e9 o ID do processo (11297) e o n\u00famero descritor do arquivo (3r). Com essas informa\u00e7\u00f5es, podemos copiar o arquivo facilmente. Observe que no comando abaixo n\u00f3s removemos o \"r\" do n\u00famero descritor do arquivo.<\/p>\n<p>cp \/proc\/11297\/fd\/3 meu_arquivo_restaurado.mpg<\/p>\n<p>Esse comando copia o arquivo original e salva o dia. Mas e quando voc\u00ea remove um arquivo que n\u00e3o est\u00e1 sendo usado por nenhum programa? Nesse caso, pare de usar imediatamente o sistema de arquivos no qual o arquivo estava. Comece desmontando a parti\u00e7\u00e3o (no meu caso, \/dev\/sda3):<\/p>\n<p>umount \/dev\/sda3<\/p>\n<p>Baixe o ext3grep (dispon\u00edvel nos reposit\u00f3rios de v\u00e1rias distros) ou o extundelete. Os dois usam op\u00e7\u00f5es parecidas, e contam com uma documenta\u00e7\u00e3o bastante \u00fatil. No meu exemplo, vou usar o ext3grep.<\/p>\n<p>O pr\u00f3ximo passo \u00e9 tentar localizar e recuperar os arquivos perdidos. Se for s\u00f3 um arquivo, use a op\u00e7\u00e3o \"--restore-file\". No meu exemplo, vou informar ao ext3grep o nome do arquivo que perdi e o dispositivo\/parti\u00e7\u00e3o que o abrigava.<\/p>\n<p>ext3grep --restore-file jesse\/V\u00eddeo\/aniversario_das_criancas.mpg \/dev\/sda3<\/p>\n<p>No meu caso, o ext3grep encontrou o arquivo e salvou-o em um diret\u00f3rio chamado \"RESTORED_FILES\". A busca pelos dados pode demorar algumas horas em um HD moderno. Mas e se voc\u00ea perdeu uma cole\u00e7\u00e3o de arquivos e\/ou n\u00e3o lembra o nome deles? Use a op\u00e7\u00e3o \"--restore-all\", que tenta recuperar todos os arquivos exclu\u00eddos.<\/p>\n<p>ext3grep --restore-all \/dev\/sda3<\/p>\n<p>Ao tentar recuperar grupos grandes de arquivos, geralmente \u00e9 uma boa ideia limitar o per\u00edodo de exclus\u00e3o, sen\u00e3o voc\u00ea vai ficar cheio de lixo que n\u00e3o interessa. Por exemplo, para restaurar arquivos perdidos depois do dia 1\u00ba de janeiro, use:<\/p>\n<p>ext3grep --restore-all --after `date -d \"Jan 1 00:00\" +%s` \/dev\/sda3<\/p>\n<p>Nos testes que fiz com o ext3grep, tive pouco mais de 2\/3 de \u00eaxito nas tentativas de recupera\u00e7\u00e3o de arquivos. N\u00e3o \u00e9 o ideal, mas \u00e9 melhor do que perder todos os arquivos. Outra ferramenta \u00fatil \u00e9 o PhotoRec, que tenta encontrar arquivos perdidos no HD. S\u00f3 usei o PhotoRec uma vez, mas ele fez um trabalho excelente de recupera\u00e7\u00e3o.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quase todo mundo j\u00e1 passou por isso. Na hora de mover um arquivo, digitamos errado e sai algo assim: rm<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,8],"tags":[],"class_list":["post-51","post","type-post","status-publish","format-standard","hentry","category-hardware","category-linux"],"_links":{"self":[{"href":"https:\/\/marcomapa.com\/artigos\/wp-json\/wp\/v2\/posts\/51","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marcomapa.com\/artigos\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/marcomapa.com\/artigos\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/marcomapa.com\/artigos\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/marcomapa.com\/artigos\/wp-json\/wp\/v2\/comments?post=51"}],"version-history":[{"count":1,"href":"https:\/\/marcomapa.com\/artigos\/wp-json\/wp\/v2\/posts\/51\/revisions"}],"predecessor-version":[{"id":122,"href":"https:\/\/marcomapa.com\/artigos\/wp-json\/wp\/v2\/posts\/51\/revisions\/122"}],"wp:attachment":[{"href":"https:\/\/marcomapa.com\/artigos\/wp-json\/wp\/v2\/media?parent=51"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/marcomapa.com\/artigos\/wp-json\/wp\/v2\/categories?post=51"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/marcomapa.com\/artigos\/wp-json\/wp\/v2\/tags?post=51"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}