Якщо ви робите жорсткі посилання, зверніть увагу на права на цей файл. Повідомлення, власник, група, режим, розширені атрибути, час та ACL (якщо ви використовуєте це) зберігаються в INODE. Тільки імена файлів відрізняються тим, що вони зберігаються в структурі каталогів, а інші вказують на властивості INODE. Внаслідок цього всі імена файлів, пов'язаних з одним і тим же входом, мають однакові права доступу. Вам слід запобігти модифікації цього файлу, оскільки будь-який користувач може пошкодити файл іншому. Це просто. Досить, будь-який користувач поставить інший файл з тим самим іменем. Потім номер вводу зберігається, а вихідний вміст файлу знищується (замінюється) для всіх твердих посилань.
Кращим способом є дедупликація на шарі файлової системи. Ви можете використовувати BTRFS (дуже популярний останній раз), OCFS або подібний. Подивіться на сторінку: https://en.wikipedia.org/wiki/Comppare_of_file_systems , спеціально за таблицею Особливості та дедуплікація даних стовпців. Ви можете натиснути на нього і сортувати :)
Особливо подивіться на файлову систему ZFS. Це доступно як FUSE, але таким чином це дуже повільно. Якщо вам потрібна підтримка, перегляньте сторінку http://zfsonlinux.org/ . Потім потрібно виправити ядро, а потім встановити інструменти zfs для управління. Я не розумію, чому linux не підтримує як драйвери, це для багатьох інших операційних систем / ядер.
Файлові системи підтримують дедуплікацію двома способами, дедупілюючими файлами або блоками. ZFS підтримує блок. Це означає, що той самий вміст, який повторюється в одному файлі, можна дедублювати. Інший спосіб - час, коли дані дедублюються, це може бути онлайн (zfs) або офлайн (btrfs).
Зауважте, дедуплікація споживає оперативну пам'ять. Ось чому записування файлів на об'єм ZFS, змонтований FUSE, викликає різко повільну продуктивність. Це описано в документації. Але ви можете ввімкнути / вимкнути дедуплікацію на гучність в Інтернеті. Якщо ви бачите, що будь-які дані слід дублювати, просто увімкніть дедуплікацію, перепишіть якийсь файл на будь-який тимчасовий і, нарешті, замініть. після цього ви можете вимкнути дедуплікацію та відновити повну продуктивність. Звичайно, ви можете додати до пам'яті будь-які кеш-диски. Це можуть бути дуже швидкі повороти дисків або SSD-диски. Звичайно, це можуть бути дуже маленькі диски. У реальній роботі це заміна оперативної пам'яті :)
Під Linux ви повинні піклуватися про ZFS, оскільки не всі працюють як слід, спеціально, коли ви керуєте файловою системою, робите знімок тощо, але якщо ви конфігуруєте і не змінюєте її, все працює належним чином. В іншому випадку вам слід змінити linux на opensolaris, він споконвічно підтримує ZFS :) Що дуже приємно з ZFS, це працює як файлова система, так і менеджер томів, схожий на LVM. Вам це не потрібно, коли ви використовуєте ZFS. Дивіться документацію, якщо хочете дізнатися більше.
Помітьте різницю між ZFS та BTRFS. ZFS старший і зріліший, на жаль, лише в рамках Solaris і OpenSolaris (на жаль, задушений оракул). BTRFS молодший, але останній раз дуже добре підтримується. Я рекомендую свіже ядро. ZFS має онлайн-дедуплікацію, що спричиняє уповільнення запису, тому що все розраховується в Інтернеті. BTRFS підтримує де-лайн дедуляцію. Потім це економить продуктивність, але коли хосту нічого не робити, ви періодично запускаєте інструмент для дедуплікації. І BTRFS створюється під Linux. Можливо, це краще для вас :)