Como encontrar arquivos cujo inode não é referenciado por nenhum diretório

5

Ok, há algum tempo atrás encontrei o que parece ser um bug no nautilus.

/tmp$ mkdir test/
/tmp$ mkdir test2/
/tmp$ echo "very important stuff" > test/important-file.txt
/tmp$ ln -s /tmp/test/ test2/test

Se você tentar mv test2/test . bash é inteligente o suficiente para responder:

mv: «test2/test» and «./test» identify the same file

Eu criei um link simbólico para testar (um diretório contendo um arquivo) em outro local e, em seguida, movi o link simbólico para o local em que o diretório estava

Mas o nautilus entra no jogo:

O Nautilus entende que o link simbólico é um diretório, e gentilmente me oferece para mesclá-lo:

Agora, eu os fundei (obviamente, pensei que eram dois diretórios diferentes). E como resultado ...

tmp$ ls -la
lrwxrwxrwx  1 cool-user  best-group-ever      9 août  26 23:51 test -> /tmp/test

Ok. Então eu perdi meu diretório (o que é normal, porque eu o substituí) e acabei com um link simbólico circular inútil, mas ... o que aconteceu com o meu important-file.txt ? Ele tinha um inode, que não é mais referenciado por nenhum diretório do meu sistema.

Obviamente, eu não escrevi esse inode em um post-it ... então, onde está? Existe alguma maneira de encontrar todos os arquivos com um inode que não é referenciado por nenhum diretório?

E como uma questão bônus: este é o comportamento esperado do nautilus, ou é um bug?

Por que e como isso aconteceu comigo é uma longa história, mas eu tinha alguns arquivos realmente importantes (e confidenciais) dentro do meu diretório que eu gostaria de voltar

    
por Luis Sieira 27.08.2015 / 00:01

2 respostas

3

Não tenho certeza de que isso é possível. Afinal, todo o seu espaço livre é uma lista de inodes.

Veja, no entanto, o recurso Arquivo órfão do ext4.

    
por Serban 18.09.2015 / 13:14
0

Vou postar minha resposta, mas não aceito, já que não parece ter um significado bom (pelo menos em termos de eficiência ou integridade).

Isso exigiria um programa (eu escreveria em C) que percorre de forma recursiva toda a árvore de diretórios , registra cada inode referenciado em uma lista ordenada (evitando duplicatas) e, em seguida, o difere de acordo com a lista de inodes real.

A diferença são os arquivos ausentes

    
por Luis Sieira 18.09.2015 / 14:23