Detecção de link suave

2

No meu próprio SO baseado em LFS, criei muitos softlinks. Soft-link pode ser excluído sem prejudicar o alvo.

Mas existe alguma maneira que, se eu remover o arquivo ou diretório, serei notificado sobre o link flexível? Para que não haja nenhum ponteiro de link flexível pendente.

Ocasionalmente, encontrar um link flexível e depois excluir é o caminho. Mas isso será solução estática. Estou procurando uma maneira dinâmica

    
por SHW 04.01.2014 / 07:44

2 respostas

2

Infelizmente não. Os links de link simbólico (link simbólico ou link simbólico) não acompanham o fato de estarem vinculados. Também não é possível: links simbólicos podem cruzar sistemas de arquivos, então o link pode estar em um sistema de arquivos diferente, que ainda não está montado atualmente.

Você pode, claro, adicionar um cron job para procurar links quebrados todas as noites e notificá-lo. Para encontrar links quebrados, consulte Como posso encontrar links simbólicos quebrados (outra pergunta neste site).

    
por 04.01.2014 / 08:04
0

Não é possível fazer isso com soft-links, porque no caso de soft links os targets não estão cientes da existência dos links para eles.

No entanto, se o seu destino e os arquivos de origem estiverem na mesma partição, você poderá usar links físicos. Com links físicos, há um contador no inode para o qual eles apontam, que controla quantos links (arquivos) estão vinculados ao inode.

Você pode ver esse contador usando o comando stat (ou chamada do sistema). A saída é assim, olhe para o campo links , mostra quantos links / arquivos estão apontando para o inode deste arquivo:

~ $ touch testfile1
~ $ ln testfile1 testfile2
~ $ stat testfile1
  File: ‘testfile1’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d      Inode: 7062809     Links: 2
Access: (0644/-rw-r--r--)  Uid: ( 1000/     mst)   Gid: (  100/   users)
Access: 2014-01-04 10:19:27.899679948 +0300
Modify: 2014-01-04 10:19:27.899679948 +0300
Change: 2014-01-04 10:19:33.149679891 +0300
 Birth: -

Portanto, antes de excluir um arquivo, você pode verificar as estatísticas dele, se o campo Links estiver acima de 1 , é necessário que haja outro link físico para ele. Infelizmente, encontrar o segundo hard link baseado em um inode será uma operação de busca cara, então espero que você tenha algum tipo de esquema de nomenclatura para encontrá-los mais rápido.

    
por 04.01.2014 / 08:24

Tags