Link para um inode específico

14

Eu tenho um arquivo que foi excluído, mas ainda é mantido aberto por um programa. Eu encontrei o número do inode usando lsof. Como posso criar um link de volta para esse inode?

    
por Jeff Ferland 24.07.2009 / 17:51

3 respostas

31

Você não pode criar um link para ele, mas pode recuperá-lo. Vamos fazer um experimento:

$ echo blurfl >myfile.txt
$ tail -f myfile.txt &
$ rm myfile.txt

myfile.txt agora desapareceu, mas o inode é mantido vivo pelo comando tail. Para recuperar seu arquivo, primeiro encontre o PID do processo mantendo o inode:

$ ps auxw | grep tail
sunny      409  0.0  0.0   8532   824 pts/5    S    18:07   0:00 tail -f myfile.txt

O PID é 409. Chdir para / proc / 409 / fd / e listar o conteúdo:

dr-x------ 2 sunny sunny  0 2009-07-24 18:07:18 .
dr-xr-xr-x 7 sunny sunny  0 2009-07-24 18:07:17 ..
lrwx------ 1 sunny sunny 64 2009-07-24 18:07:33 0 -> /dev/pts/5
lrwx------ 1 sunny sunny 64 2009-07-24 18:07:33 1 -> /dev/pts/5
lrwx------ 1 sunny sunny 64 2009-07-24 18:07:18 2 -> /dev/pts/5
lr-x------ 1 sunny sunny 64 2009-07-24 18:07:33 3 -> /home/sunny/tmp/myfile.txt (deleted)

Os diretórios / proc / [PID] / fd / contêm links simbólicos para os descritores de arquivos de todos os arquivos que o processo usa. Neste caso, o link simbólico "3" aponta para o arquivo deletado. Então, para restaurar o arquivo, copie o conteúdo para um novo arquivo:

$ cat 3 >/home/mydir/saved_file.txt
    
por 24.07.2009 / 18:13
2

para obter o arquivo inteiro, se ainda estiver escrito, para tentar tail -c +1 -f

de: link

(btw: ln do fd on / proc não funciona, tentei isso)

    
por 28.10.2013 / 05:28
-8

Não há uma maneira portátil de fazer isso no Linux. A melhor maneira provavelmente seria interromper toda a atividade no sistema de arquivos, eliminar o programa que mantém o arquivo aberto, desmontar o sistema de arquivos e usar um depurador do sistema de arquivos para reconectá-lo a um diretório. Se você tiver o sistema de arquivos exportado através do NFS, pelo menos algumas versões do NFS podem permitir que você leia os dados do arquivo no NFS.

    
por 24.07.2009 / 17:56