Hardlinks de um arquivo

3

O que é, no Linux, a maneira de obter uma lista de hardlinks de um arquivo?

    
por dugres 24.09.2009 / 11:17

4 respostas

3
find /partition_root -samefile /partition_root/file/to/find/hardlinks/of
    
por 24.09.2009 / 11:24
6

Comece por garantir que a contagem de hardlinks de ls seja maior que 0.

Em caso afirmativo, você pode pesquisá-los de forma meticulosa:

find <path> -type f -samefile <source>

Isso localiza todos os arquivos em um determinado caminho e compara o número de inode do seu arquivo de origem com o do (s) arquivo (s) encontrado (s). Hardlinks compartilham o mesmo inode. Então, se eles combinam, você tem um link para você mesmo.

    
por 24.09.2009 / 11:25
3

Pode haver um método mais fácil / mais rápido, mas

stat file

que dá algo parecido com

  File: 'file'
  Size: 14              Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 4227594     Links: 1
Access: (0644/-rw-r--r--)  Uid: (  501/   phone)   Gid: (  501/   phone)
Access: 2009-09-22 15:33:15.000000000 +0100
Modify: 2009-05-11 17:01:15.000000000 +0100
Change: 2009-05-11 17:05:09.000000000 +0100

usando o número do inode da linha Inode,

find /path -inum 4227594
    
por 24.09.2009 / 11:23
0

Somente para links de hardware:

find -samefile xaa -ls

para incluir também links simbólicos:

find -L -samefile xaa -exec ls -li {} \;

Usar -exec ls aqui em vez de -ls mostra o proprietário, o grupo, as permissões e o destino dos próprios links simbólicos em vez das informações do destino.

    
por 14.01.2010 / 10:14