Quello che stai chiedendo non è possibile in nessun file system che conosco, a causa di come sono implementati, come descritto qui. E non capisco perché dovresti preoccuparti dei metadati, per cominciare?
Innanzitutto, gli unici dati nella voce della directory sono il nome file e il numero dell'inode.
In secondo luogo, viene creato un collegamento reale quando si creano due o più nomi di file con lo stesso numero di inode.
L'inode memorizza tutto il resto, cose come atime e mtime e altri metadati, inclusi "puntatori" ai blocchi di dati del file.
Se hai due file il cui contenuto è lo stesso, ma gli inode sono diversi, la maggior parte dei metadati negli inode sarà diversa, ad esempio l'atime menzionato e mtime saranno diversi, così come tutti i puntatori del blocco dati.
Per utilizzare un collegamento reale per ridurre l'utilizzo dell'archiviazione, è necessario eliminare uno o l'altro dei file duplicati, che "chiuderanno" anche l'inode, perdendo tutti i metadati. Quindi si crea un collegamento al file esistente rimanente, utilizzando il nome e il percorso della directory del file appena eliminato.
Il "nuovo" collegamento al file ora avrà tutte le stesse informazioni sull'inode di quello a cui ti sei appena collegato. Le uniche differenze saranno la posizione nella gerarchia di directory e il nome utilizzato, che sono memorizzati nella voce di directory, non l'inode.
Tutto questo viene gestito attraverso le chiamate di sistema utilizzate per creare file, collegamenti e directory e non è direttamente modificabile da alcun utente o software, incluso 'root'. Potresti leggerlo e archiviare i dati in un file separato, ma la facile associazione di una gerarchia di directory andrà persa.