Est-il possible de supprimer complètement un inode lorsque le nombre de liens est 2?

Actuellement, mes données sont organisées dans un volume doté d’un répertoire de cache (où tous les fichiers sont créés ou transférés pour la première fois). Après cela, il y a des répertoires appropriés sur le volume qui, dans leurs sous-répertoires, contiennent des fichiers liés à des fichiers dans le cache. Ceci est fait pour que le même inode (fichier) puisse être lié plusieurs fois dans plusieurs répertoires.

Maintenant, en essayant de nettoyer le volume, je passe récursivement dans les répertoires (pas dans le cache) et selon certains critères, dissocie les fichiers (ce qui réduit le nombre d’inodes de l’entrée du cache de 1). Y a-t-il un moyen de supprimer directement l’entrée du cache lorsque je supprime le dernier lien physique (ce qui ramène le compte de 2 à 1). De cette façon, je n’aurais pas à parsingr manuellement tout le répertoire du cache pour en éliminer les inodes, dont le nombre de liens est de 1.

Je suis passé par des fonctions de dissociation / suppression, et je n’ai rien trouvé de spécifique d’utilisation. Y a-t-il un algorithme de purge qui en interne prend soin de cela, alors je peux essayer de l’implémenter.

Toute aide à ce sujet serait très appréciée. En prévision d’une réponse rapide.

Non, il n’y a rien qui fasse ce que vous voulez sortir de la boîte.

Il pourrait être utile de procéder à la suppression lorsque vous dissociez le lien physique et que vous remarquiez que le nombre de liens est égal à 1, car à ce stade, l’inode doit se trouver dans le cache de pages; Cela dépend bien sûr de la connaissance du nom du fichier dans le répertoire cache.

J’ai vu ceci et quelques autres endroits qui vous indiquent comment supprimer tous les liens durs du shell (utilisez find -samefile et appelez remove sur chaque fichier). Vous pouvez l’appeler via le système bien que cela puisse être mal vu par certaines personnes).