Se esegui hardlink, presta attenzione ai diritti su quel file. Avviso, proprietario, gruppo, modalità, attributi estesi, ora e ACL (se si utilizza questo) sono memorizzati in INODE. Solo i nomi dei file sono diversi perché sono memorizzati nella struttura della directory e altri punti sulle proprietà INODE. Questa causa, tutti i nomi di file collegati allo stesso inode, hanno gli stessi diritti di accesso. Dovresti impedire la modifica di quel file, perché qualsiasi utente può danneggiare il file ad altri. È semplice. È sufficiente che qualsiasi utente metta altri file con lo stesso nome. Il numero di nodo viene quindi salvato e il contenuto del file originale viene distrutto (sostituito) per tutti i nomi hardlink.
Il modo migliore è la deduplicazione a livello di filesystem. Puoi usare BTRFS (molto popolare l'ultima volta), OCFS o in questo modo. Guarda la pagina: https://en.wikipedia.org/wiki/Comparison_of_file_systems , in particolare nella tabella Funzionalità e deduplicazione dei dati di colonna. Puoi fare clic e ordinare :)
Guarda in particolare il filesystem ZFS. Questo è disponibile come FUSE, ma in questo modo è molto lento. Se si desidera il supporto nativo, consultare la pagina http://zfsonlinux.org/ . Quindi è necessario patch kernel e quindi installare zfs tools per managament. Non capisco, perché Linux non supporta come driver, è un modo per molti altri sistemi operativi / kernel.
I file system supportano la deduplicazione in 2 modi, file deduplicati o blocchi. ZFS supporta il blocco. Ciò significa che è possibile deduplicare lo stesso contenuto che si ripete nello stesso file. L'altro modo è il momento in cui i dati vengono deduplicati, questo può essere online (zfs) o offline (btrfs).
Si noti che la deduplicazione consuma RAM. Questo è il motivo per cui la scrittura di file nel volume ZFS montato con FUSE causa prestazioni notevolmente lente. Questo è descritto nella documentazione. Ma puoi impostare on / off la deduplicazione sul volume online. Se vedi che tutti i dati devono essere deduplicati, devi semplicemente attivare la deduplicazione, riscrivere alcuni file su qualsiasi temporaneo e infine sostituirli. dopo questo è possibile disattivare la deduplicazione e ripristinare le prestazioni complete. Naturalmente, è possibile aggiungere alla memoria tutti i dischi cache. Questo può essere molto veloce ruotare dischi o dischi SSD. Naturalmente questo può essere un disco molto piccolo. Nel lavoro reale questo è il sostituto della RAM :)
Sotto Linux dovresti prenderti cura di ZFS perché non tutto funziona come dovrebbe, specialmente quando gestisci il filesystem, fai uno snapshot ecc. Ma se fai la configurazione e non la cambi, tutto funziona correttamente. Altrimenti, dovresti cambiare Linux in opensolaris, supporta nativamente ZFS :) Ciò che è molto bello con ZFS è che funziona sia come filesystem che come gestore volumen simile a LVM. Non è necessario quando si utilizza ZFS. Vedi la documentazione se vuoi saperne di più.
Notare la differenza tra ZFS e BTRFS. ZFS è più vecchio e più maturo, purtroppo solo sotto Solaris e OpenSolaris (purtroppo strangolato dall'oracolo). BTRFS è più giovane, ma l'ultima volta supportato molto bene. Raccomando kernel fresco. ZFS ha la deduplicazione online, che causa rallentamenti delle scritture, perché tutto è calcolato online. BTRFS supporta la dedupliazione off-line. Quindi questo salva le prestazioni, ma quando l'host non ha nulla a che fare, si esegue periodicamente lo strumento per effettuare la deduplicazione. E BTRFS è creato nativamente sotto Linux. Forse è meglio per te :)