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.