Si vous faites des liens en dur, faites attention aux droits sur ce fichier. Avis, propriétaire, groupe, mode, attributs étendus, heure et ACL (si vous l'utilisez) est stocké dans INODE. Seuls les noms de fichiers sont différents car ils sont stockés dans une structure de répertoires et que d'autres pointent vers les propriétés INODE. Cette cause, tous les noms de fichiers liés au même inode ont les mêmes droits d'accès. Vous devez empêcher la modification de ce fichier, car tout utilisateur peut endommager le fichier. C'est simple. Il suffit que n'importe quel utilisateur mette un autre fichier sous le même nom. Le numéro d'inode est ensuite enregistré et le contenu du fichier d'origine est détruit (remplacé) pour tous les noms liés de manière permanente.
La meilleure façon est la déduplication sur la couche du système de fichiers. Vous pouvez utiliser BTRFS (très populaire la dernière fois), OCFS ou similaire. Regardez la page: https://en.wikipedia.org/wiki/Comparison_of_file_systems , plus particulièrement à la table Caractéristiques et déduplication des données de colonne. Vous pouvez cliquer dessus et trier :)
Regardez spécialement le système de fichiers ZFS. Ceci est disponible en tant que FUSE, mais de cette façon, il est très lent. Si vous souhaitez un support natif, consultez la page http://zfsonlinux.org/ . Ensuite, vous devez patcher le noyau, puis installer les outils zfs pour la gestion. Je ne comprends pas pourquoi Linux ne supporte pas les pilotes, mais bien d'autres systèmes d'exploitation / noyaux.
Les systèmes de fichiers prennent en charge la déduplication de deux manières, les fichiers dédoublonnés ou les blocs. ZFS prend en charge le blocage. Cela signifie que le même contenu qui se répète dans le même fichier peut être dédupliqué. Autrement, l'heure à laquelle les données sont dédupliquées peut être en ligne (zfs) ou hors ligne (btrfs).
Notez que la déduplication consomme de la RAM. C’est pourquoi l’écriture de fichiers sur un volume ZFS monté avec FUSE nuit considérablement aux performances. Ceci est décrit dans la documentation. Mais vous pouvez définir en ligne la déduplication activée / désactivée sur le volume. Si vous estimez que des données doivent être dédupliquées, vous devez simplement activer la déduplication, réécrire certains fichiers sur un fichier temporaire et enfin les remplacer. après cela, vous pouvez désactiver la déduplication et restaurer des performances optimales. Bien sûr, vous pouvez ajouter au stockage n’importe quel disque en cache. Cela peut être une rotation très rapide des disques ou des disques SSD. Bien sûr, cela peut être de très petits disques. En vrai travail, ceci remplace la RAM :)
Sous Linux, vous devez prendre soin de ZFS car tout ne fonctionne pas comme il se doit, spécialement lorsque vous gérez un système de fichiers, créez un instantané, etc., mais si vous effectuez une configuration sans le modifier, tout fonctionne correctement. Autrement, vous devriez changer linux en opensolaris, il supporte nativement ZFS :) Ce qui est bien avec ZFS, c’est que ça fonctionne à la fois en tant que système de fichiers et en tant que gestionnaire de volumen similaire à LVM. Vous n'en avez pas besoin lorsque vous utilisez ZFS. Voir la documentation si vous voulez en savoir plus.
Remarquez la différence entre ZFS et BTRFS. ZFS est plus ancien et plus mature, malheureusement uniquement sous Solaris et OpenSolaris (malheureusement étranglé par Oracle). BTRFS est plus jeune, mais la dernière fois, très bien pris en charge. Je recommande le noyau frais. ZFS a une déduplication en ligne, qui ralentit les écritures, car tout est calculé en ligne. BTRFS prend en charge la déduplication hors ligne. Cela économise ensuite les performances, mais lorsque l’hôte n’a plus rien à faire, vous exécutez régulièrement un outil pour effectuer la déduplication. Et BTRFS est créé nativement sous Linux. Peut-être que c'est mieux FS pour vous :)