Posso usare ls -lper ottenere la dimensione logica di un file, ma c'è un modo per ottenere la dimensione fisica di un file?
Posso usare ls -lper ottenere la dimensione logica di un file, ma c'è un modo per ottenere la dimensione fisica di un file?
Risposte:
ls -lti darà la dimensione apparente del file, che è il numero di byte che un programma leggerebbe se leggesse il file dall'inizio alla fine. duti darebbe la dimensione del file "su disco".
Per impostazione predefinita, duti dà la dimensione del file in numero di blocchi del disco, ma puoi usare invece -hper ottenere un'unità leggibile dall'uomo. Vedi anche il manuale per dusul tuo sistema.
Nota che con GNU coreutil du(che è probabilmente quello che hai su Linux), -bottenere byte implica l' --apparent-sizeopzione. Questo non è ciò che si desidera utilizzare per ottenere il numero di byte effettivamente utilizzati sul disco. Utilizzare invece --block-size=1o -B 1.
Con GNU ls, puoi anche fare ls -s --block-size=1il file. Questo darà lo stesso numero du -B 1del file.
Esempio:
$ ls -l file
-rw-r--r-- 1 myself wheel 536870912 Apr 8 11:44 file
$ ls -lh file
-rw-r--r-- 1 myself wheel 512M Apr 8 11:44 file
$ du -h file
24K file
$ du -B 1 file
24576 file
$ ls -s --block-size=1 file
24576 file
Ciò significa che si tratta di un file da 512 MB che richiede circa 24 KB su disco. È un file sparso (per lo più zeri che non sono effettivamente scritti su disco ma rappresentati come "buchi" logici nel file). I file sparsi sono comuni quando si lavora con file di grandi dimensioni pre-allocati, ad esempio immagini del disco per macchine virtuali o file di scambio, ecc. La creazione di un file sparse è rapida, mentre il riempimento con zeri è lento (e non necessario).
Vedi anche il manuale per fallocatesul tuo sistema Linux.
du mostrerebbe quanti dati possono essere effettivamente letti, mentre lsmostra in che misura vengono allocati i settori del disco.
dumostra la quantità di disco effettivamente utilizzata dal file, mentre la dimensione apparente (dimensione logica) indicata da lsè quanti byte un programma sarebbe in grado di leggere da esso. Se il file è scarso, alcuni dei byte letti sarebbero zero, ma sarebbero comunque consegnati al programma che li leggeva (ma non dal disco).