Perché Nautilus mostra un file e il suo hard link è più grande del solo file?

2

Quando creo un hard link in un file da 2 KB (chiamato fun ), Nautilus mostra questo collegamento reale (chiamato fun-hard ) come un file con la stessa dimensione. Questi due file puntano allo stesso inode quindi le loro proprietà combinate dovrebbero visualizzare anche solo 2 KB. Ma Nautilus dice invece che la loro dimensione totale è di 4 KB. Perché?

    
posta hunch 06.08.2014 - 07:17

1 risposta

5

Naturalmente, se si crea un collegamento fisico a un file, sia il file originale che il collegamento reale puntano allo stesso inode. In effetti, entrambi sono equivalenti: per il sistema non esistono "l'originale" e "il collegamento". Sono semplicemente due punti di accesso allo stesso inode. Di conseguenza, non occupano più spazio insieme rispetto a se avessi un solo punto di accesso (eccetto per il più piccolo bit di informazione nel filesystem, dove sono memorizzati due puntatori a qualche inode invece di uno solo).

Puoi facilmente confermarlo quando usi un'utilità di file system di basso livello come, ad esempio, du . Ad esempio, qui ho una directory con una singola canzone ( FOSS Yeaaaah! , una fantastica canzone su Ubuntu di Ben Kerensa) di circa 2,1 MB:

$ ls -li 
total 2124
6424897 -rw-rw-r-- 1 malte malte 2162937 Aug  7 12:53 FOSS Yeaaaah!.mp3
$ du -ch * # display size of all files, and total size
2.1M    FOSS Yeaaaah!.mp3
2.1M    total
$ du -h . # display size of current directory
2.1M    .

Quando creo un collegamento fisico, diciamo Link.mp3 , nel file, du riconosce effettivamente che entrambi i nomi di file puntano allo stesso file e ne visualizza solo uno:

$ ln FOSS\ Yeaaaah\!.mp3 Link.mp3
$ ls -li
total 4248
6424897 -rw-rw-r-- 2 malte malte 2162937 Aug  7 12:53 FOSS Yeaaaah!.mp3
6424897 -rw-rw-r-- 2 malte malte 2162937 Aug  7 12:53 Link.mp3
$ du -ch *
2.1M    FOSS Yeaaaah!.mp3
2.1M    total
$ du -h .
2.1M    .

(Viene visualizzato solo quello che viene prima in ordine alfabetico - ho chiamato il collegamento fisico A.mp3 , quindi du avrebbe visualizzato quello).

Il comportamento che stai riscontrando è probabilmente un bug o imprecisione in qualsiasi software utilizzato per visualizzare le dimensioni dei file. Se è Nautilus (il browser di file standard in una tipica installazione di Ubuntu), allora posso confermare questo comportamento. Vedi questo bug report:

link

Potrebbe essere solo "una funzionalità, non un bug" - poiché Nautilus sta cercando di mantenere le cose semplici per l'utente medio, semplicemente ignora i collegamenti fisici. Quale potrebbe non essere sempre la migliore idea. Citando dalla segnalazione di bug:

  

Nautilus cerca di mantenere le cose semplici. Ecco perché non offre un modo per creare collegamenti. Ma se le cose sono già complicate, se i collegamenti sono già presenti, ignorarli può portare a problemi di per sé.

In sintesi, se stai lavorando con collegamenti fisici, affidati a un terminale piuttosto che a un'applicazione per la navigazione di file.

    
risposta data Malte Skoruppa 07.08.2014 - 13:07

Leggi altre domande sui tag