Si va a hacer enlaces duros, preste atención a los derechos en ese archivo. Aviso, propietario, grupo, modo, atributos extendidos, tiempo y ACL (si usa esto) se almacenan en INODE. Solo los nombres de los archivos son diferentes porque se almacenan en la estructura del directorio y otros puntos a las propiedades INODE. Esta causa, todos los nombres de archivo vinculados al mismo inodo, tienen los mismos derechos de acceso. Debe evitar la modificación de ese archivo, ya que cualquier usuario puede dañar el archivo a otro. Es simple. Es suficiente, cualquier usuario pone otro archivo con el mismo nombre. El número de inoode se guarda y el contenido del archivo original se destruye (reemplaza) para todos los nombres enlazados.
La mejor manera es la deduplicación en la capa del sistema de archivos. Puede usar BTRFS (muy popular la última vez), OCFS o de esta manera. Mire la página: https://en.wikipedia.org/wiki/Comparison_of_file_systems , especialmente en la tabla Características y deduplicación de datos de columna. Puedes hacer clic y ordenar :)
Mire especialmente al sistema de archivos ZFS. Está disponible como FUSE, pero de esta manera es muy lento. Si desea soporte nativo, mire la página http://zfsonlinux.org/ . Luego debe parchear el kernel y luego instalar las herramientas zfs para la administración. No entiendo, por qué Linux no es compatible como controladores, es la forma para muchos otros sistemas operativos / núcleos.
Los sistemas de archivos admiten la deduplicación de 2 formas, deduplicar archivos o bloques. ZFS admite bloque. Esto significa que los mismos contenidos que se repiten en el mismo archivo pueden deduplicarse. Otra forma es cuando los datos se deduplican, esto puede ser en línea (zfs) o fuera de línea (btrfs).
Aviso, la deduplicación consume RAM. Es por eso que escribir archivos en el volumen ZFS montado con FUSE, causa un rendimiento dramáticamente lento Esto se describe en la documentación. Pero en línea puede activar / desactivar la deduplicación en volumen. Si ve que algún dato debe ser deduplicado, simplemente active la deduplicación, reescriba algún archivo en cualquier temporal y finalmente reemplácelo. después de esto, puede desactivar la deduplicación y restaurar el rendimiento completo. Por supuesto, puede agregar al almacenamiento cualquier disco de caché. Esto puede ser discos de rotación muy rápidos o discos SSD. Por supuesto, esto puede ser discos muy pequeños. En el trabajo real, este es el reemplazo de RAM :)
En Linux, debe tener cuidado con ZFS porque no todo funciona como debería, especialmente cuando administra el sistema de archivos, toma una instantánea, etc., pero si realiza la configuración y no la cambia, todo funciona correctamente. De otra manera, debe cambiar Linux a opensolaris, es compatible de forma nativa con ZFS :) Lo que es muy bueno con ZFS es que funciona tanto como sistema de archivos como administrador de volumen similar a LVM. No lo necesita cuando usa ZFS. Consulte la documentación si desea saber más.
Observe la diferencia entre ZFS y BTRFS. ZFS es más antiguo y más maduro, desafortunadamente solo bajo Solaris y OpenSolaris (desafortunadamente estrangulado por Oracle). BTRFS es más joven, pero la última vez es muy bueno. Recomiendo kernel fresco. ZFS tiene deduplicación en línea, lo que causa ralentizaciones de escritura, porque todo se calcula en línea. BTRFS admite deduplicación fuera de línea. Entonces esto ahorra rendimiento, pero cuando el host no tiene nada que hacer, ejecuta periódicamente la herramienta para realizar la deduplicación. Y BTRFS se crea de forma nativa en Linux. Tal vez esto es mejor FS para ti :)