Como descobrir se um arquivo é hard link ou symlink? [duplicado]

3

Eu tenho um arquivo em ~/file.txt .

Eu criei um link físico por:

ln ~/file.txt ~/test/hardfile.txt

e um arquivo de link simbólico:

ln -s ~/file.txt ~/test/symfile.txt

Agora,

  1. Como posso descobrir qual arquivo é link físico?
  2. Como posso saber se o link rígido segue qual arquivo?

Podemos encontrar o arquivo symlink por -> , mas e o link físico?

    
por Hamed Kamrava 28.11.2014 / 14:44

2 respostas

8

-rw--r--r-- 2 kamix users 5 Nov 17:10 hardfile.txt
            ^

Esse é o número de links físicos que o arquivo possui. Um "link físico" é, na verdade, entre duas entradas de diretório; eles são realmente o mesmo arquivo. Você pode dizer, olhando para a saída de stat :

stat hardlink.file | grep inode
Device: 805h/2053d      Inode: 1835019     Links: 2

Repare que o número de links é 2, indicando que há outra listagem para esse arquivo em algum lugar. O motivo pelo qual você sabe que este é o mesmo arquivo que o outro é que eles têm o mesmo número de inode; nenhum outro arquivo terá isso. Infelizmente, esta é a única maneira de encontrá-los (pelo número do inode).

Existem algumas idéias sobre como melhor encontrar um arquivo por inode (por exemplo, com find ) em este Q & A .

    
por 28.11.2014 / 14:59
3

Um arquivo com link físico tem mais de um link (o 2 após os sinalizadores de permissão). Você pode usar o comando stat para extrair facilmente essas informações:

$ stat --printf '%h\n' hardfile.txt
2

Consulte a página de manual para stat ( man 1 stat ) para obter informações sobre outros valores e como imprimi-los.

    
por 28.11.2014 / 14:49