I collegamenti simbolici fanno davvero la differenza nell'uso del disco?


21

Ho letto in così tanti siti Web che, in Linux, i collegamenti simbolici (collegamenti soft, collegamenti simbolici) sono proprio come puntatori che fanno riferimento a un altro file, che può trovarsi ovunque (come i collegamenti di Windows). Tuttavia, quando controllo l'utilizzo del disco di una cartella in cui sono presenti collegamenti simbolici, c'è una discrepanza tra ciò che dice il mio file manager e ciò che duriporta. Tuttavia, se scrivo du -L( -L, --dereference; dereference all symbolic linksdalla pagina man), l'output du -Le la dimensione segnalati dal mio file manager sono gli stessi .

La mia domanda è : se ho un softlink a un file di grandi dimensioni, ad esempio nella miahomepartizioneseparata, avrò problemi?

Esempio :

La mia /var/tmpcartella ora è vuota. Creiamo un file:

$ cat /some/file.txt > file.txt
$ du -ac
164 ./file.txt
168 .
168 total

E il mio gestore di file (Thunar, in questo caso) riporta

Dimensione: 1 articolo, per un totale di 163,0 kB

Tutto ok. Ora, consente di creare un file molto grande /tmpe un link simbolico ad esso:

$ cat /dir/really_big.txt > /tmp/heavy.txt
$ du -a | grep heavy.txt
408 ./heavy.txt
$ ln -s /tmp/heavy.txt heavy.txt
$ du -ac
164 ./file.txt
0   ./heavy.txt
168 .
168 total

Per ora va tutto bene. Ma se apro il mio file manager:

Dimensioni: 2 articoli, per un totale di 570,3 kB

E infine:

$ du -acL
164 ./file.txt
408 ./heavy.txt
576 .
576 total

Se la partizione in cui /var/tmpsi trova ha una dimensione di 1 GiB e creo un collegamento in esso a un file di 1 GiB, il mio disco rigido morirà? So che duprodurrà 168 e Thunar 1 GiB, ma non so quale sia giusto.


Sei sicuro che un programma non stia segnalando ad esempio in Mib e un altro in MB?
HandyGandy,

No, non è un problema di unità.
astrojuanlu,

Risposte:


34

I collegamenti simbolici occupano spazio, ovviamente, ma solo la stanza che serve per memorizzare il nome e il target più alcuni byte per altri metadati. Lo spazio occupato da un collegamento simbolico non dipende dallo spazio occupato dal bersaglio (dopotutto, il bersaglio non deve nemmeno esistere).

Plain duriporta lo spazio occupato da un albero di directory sul disco. du -Lriporta lo spazio che verrebbe occupato da un albero di directory se tutti i collegamenti simbolici fossero sostituiti dal loro target. Il primo è di solito l'informazione utile; ad esempio, è lo spazio che recupereresti se eliminassi l'albero, ed è (approssimativamente) lo spazio necessario per eseguire il backup dell'albero.

dusu un albero di directory mostra (di solito) un po 'più del totale delle dimensioni del file. Ciò è dovuto a due cose. Innanzitutto, duconta anche le directory, che occupano un po 'di spazio per memorizzare nomi di file e metadati. In secondo luogo, duconta lo spazio su disco occupato da un file, che può essere diverso dalla dimensione del file: l'effetto più comune è che i file occupano un numero intero di blocchi (4kB su una tipica installazione Linux), quindi un file da 1 byte può mostra come 4kB in du output; ma la compressione (come la forma primitiva fornita da file sparsi su quasi tutti i filesystem unix) può aumentare le dimensioni del file rispetto al suo utilizzo del disco.

Dai numeri forniti , sembra che Thunar mostri la somma delle dimensioni dei file nella struttura di directory, seguendo collegamenti simbolici . In realtà lo sta dicendo in modo sottile: afferma che la dimensione totale è 570,3 kB, non che l'utilizzo del disco sia 570,3 kB. Ciò che non risulta affatto dall'interfaccia utente o dalla documentazione è che Thunar segue collegamenti simbolici durante il calcolo delle dimensioni.

Chi è "giusto" è una questione soggettiva. dusegnala l'utilizzo del disco. Thunar riporta le dimensioni totali seguendo collegamenti simbolici. La creazione di un collegamento simbolico ha un impatto trascurabile sull'utilizzo del disco, ma per definizione cambia i collegamenti simbolici seguenti alla dimensione totale riportati da Thunar.


Ho modificato la mia domanda, quindi penso che ora sia abbastanza chiaro, ma grazie per la risposta.
astrojuanlu,

@ Juanlu001: ho aggiornato la mia risposta di conseguenza. In breve, dumostra l'utilizzo del disco, mentre Thunar mostra qualcos'altro.
Gilles 'SO- smetti di essere malvagio' il

La differenza è importante quando si creano backup che risolvono collegamenti simbolici. Potresti farlo se sai di avere diversi collegamenti simbolici sotto un albero che si risolvono in posizioni esterne a un albero, ma il resto delle cose fuori da quell'albero non è importante per te.
Mel

3

Per impostazione predefinita, penso che il tuo gestore di file stia cercando di ottenere la dimensione dei file a cui punta i collegamenti software, mentre duti dà la dimensione della directory e dei collegamenti software stessi ma non i file a cui punta.

Chiarire,

`du`    -> size of directory + size of all the softlinks  
`du -L` -> size of directory + size of all the files that the softlinks are pointing to.

Non sono sicuro se questo è quello che stavi chiedendo, ma se lo è, credo che questa potrebbe essere la risposta alla tua domanda.


Mi dispiace che non abbia risposto alla mia domanda: quello che hai detto l'ho già capito. L'ho appena modificato.
astrojuanlu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.