PROCURAR:     
  Sexta, 27/11/2009
» Introdução
» Programação
» Administração
» Hardware
» Aplicativos
» Jogos
» Segurança
» Editorial
» Entrevistas
» Fórum
» Links
» Notícias
» Pegue o Linux
» Documentação
» Programas
» Dúvidas
» Oportunidades
» Sobre
» Contato
» Publicidade
 
Powered By:
DEBIAN
GNU/LINUX
 
English Version
 
 
Recuperando arquivos apagados - parte II
Por: Guilherme Cox

O debugfs tem um comando que permite você ter mais detalhes sobre os inodes. Quando você tiver uma lista com todos inodes que você quer recuperar tente o comando: (estou supondo que estou interessado no inode 148003.

debugfs: stat <148003>
Inode: 148003 Type: regular Mode: 0644 Flags: 0x0 Version: 1
User: 503 Group: 100 Size: 6065
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount:
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 2000
atime: 0x31a21dd1 -- Tue May 21 20:47:29 2000
mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 2000
dtime: 0x31a9a574 -- Mon May 27 13:52:04 2000
BLOCKS:
594810 594811 594814 594815 594816 594817
TOTAL: 6

Se você possui muitos inodes para verificar, tente o comando abaixo:

# cut -c1-6 lsdel.out | grep "[0-9]" | tr -d " " > path/para/inodes

Vai gerar o arquivo inodes, que vai conter apenas o número dos inodes para recuperar, um por linha. Esse arquivo vai ser útil então para usarmos neste novo comando, para obter os dados extendidos de cada inodes:

# sed 's/^.*$/stat <\0>/' inodes | debugfs /dev/hda5 > path/to/stats

O arquivo stats contém toda informação necessária de cada inode.

Agora com base nestas informações e sabendo quais inodes queremos recuperar vamos enfim recuperar os dados.

Arquivos pequenos (menos de 12 blocks)
Se o arquivo possui menos de 12 blocks, toda a sequência de blocos desse arquivo está gravada dentro de um inode. debugfs tem um comando que permite você recuperar esse arquivo automaticamente. Vamos mostrar abaixo.

Primeiro fazemos o stat denovo:

debugfs: stat <148003>
Inode: 148003 Type: regular Mode: 0644 Flags: 0x0 Version: 1
User: 503 Group: 100 Size: 6065
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 12
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996
atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996
mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 1996
dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996
BLOCKS:
594810 594811 594814 594815 594816 594817
TOTAL: 6

O arquivo tem 6 blocos, podemos mandar o debugfs grava-lo no arquivo, recovered.000:

debugfs: dump <148003> /mnt/recovered.000

Podemos imaginar que deva existir algum lixo no final do arquivo, se ele não ocupar perfeitamente o tamanho de um bloco. Mas isso pode ser facilmente retificado, por temos o tamanho real do arquivo nas informações do stat, então podemos usar o comando abaixo para gerar um novo arquivo, agora com tamanho real:

# dd count=1 if=/mnt/recovered.000 of=/mnt/resized.000 bs=6065

O novo arquivo /mnt/resized.000 foi gerado, se ele não tiver sido sobre escrito, ele estará idêntico ao original. Para evitar a perda do arquivo, o quanto mais rápido voce fizer o unmount, menos danos voce terá.


«Anterior

Recuperando arquivos - método II


Enviar para um amigo

Imprimir

Índice de artigos

ENQUETE
Quais são as suas expectativas quanto ao OpenSUSE 11.2?

Que ele venha mais rápido
Seja mais leve
Mais bonito
Outros


NEWSLETTER
Inscreva-se e receba as últimas notícias, programas, artigos, novidades e tudo do mundo Linux que aconteceu na semana.
 
Digite seu email:

Publicidade / Sobre OLinux / Entre em Contato / Privacidade
Copyright (c) 1999-2009, OLinux - O Portal de Linux do Brasil.
Desenvolvido por: Linux Solutions
Todos os Direitos Reservados.