Oct 13
Filesystem Inodes
O fundamental conceito de Linux filesystem é que cada objeto no filesystem é representado por um inode.
Onde os objetos apresentam atributos como: tipo de arquivo, tamanho de arquivo, permissões, ACLs e etc.
Todas estas informações estão guardadas no inode do arquivo, onde cada inode é identificado por um inode number no filesystem (este número é único, por isto index node).
Para visualizar o inode number de um determinado objeto
ls -i /var/log/syslog
SaÃda:
21250 /var/log/syslog
Pode também utlizar o comando stat para verificar o inode number e os atributos do objeto.
stat /var/log/syslog
SaÃda
File: `/var/log/syslog`
Size: 34520 Blocks: 20 IO Block: 4096 regular file
Divece: 341h/833d Inode: 21250 Links: 0
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2007-10-10 00:30:02. 000000000 +530
Modify: 2007-10-10 00:30:03. 000000000 +530
Change: 2007-10-10 00:30:03. 000000000 +530
Exemplo de utilização:
touch /tmp/\”teste*
Você não vai conseguir remover este tipo de arquivo, pois em seu nome contém caractes de controle e também caractes especiais.
Removendo este arquivo:
ls -il /tmp
SaÃda:
695523 -rw-r–r– 1 root root 0 2007-10-10 00:35 “teste*
Usaremos o comando find para excluir por inode number
find . -inum 695523 -exec rm -i { } \;
OBS.:
Também é possÃvel utilizar \ antes de um caracter especial para utilizar o comando rm normalmente.
rm “\”teste\*”
Também é possÃvel recuperar um arquivo excluÃdo pelo seu inode number utilizando o comando debugfs da seguinte forma:
Execute o comando apontando para a partição onde se encontrava o arquivo excluÃdo.
debugfs /dev/sda3
Se desejar modificar os inodes diretamente utilize
debugfs -w /dev/sda3
Listando os inodes apagados
debugfs: lsdel
Como a saÃda será muito grande é necessário grava em algum arquivo
debugfs: quit
# echo lsdel | debufs /dev/sda3 > /tmp/inode.out
Para visualizar uma melhor descrição do inode desejado utilize
debugfs: stat <695523>
Caso possua muitos arquivos para verificar utilize:
cut -c1-6 /tmp/inode.out | grep “[0-9]” | tr -d ” ” > /tmp/inode.number
Para visualizar os detalhes de cada inode number:
sed ‘/^.*$/stat <\0>/’inode.number | debugfs /dev/sda3 > /tmp/inodes.detail
Agora sabendo quais inodes queremos vamos recupar os arquivos
debugfs: start <695523>
debugfs: dump <695523> /tmp/inodefile.out
Se por acaso ficou algum lixo no arquivo podemos, recupera-lo da seguinte maneira.
dd if=/tmp/inodefile.out of=/tmp/inodefileresize.out bs=6050 count=1
OBS.:
O valor do bs no comando dd, corresponde ao valor contido no campo Size: na saÃda do comando dubugfs: dump <695523>.
Os inodes se aplicam a todos os sistemas Linux e Unix.
Comments are off for this post
