Veuillez définir ce que vous entendez par taille "physique".
Jörg W Mittag
Réponses:
28
ls -lvous donnera la taille apparente du fichier, qui est le nombre d'octets qu'un programme lirait s'il lisait le fichier du début à la fin. duvous donnerait la taille du fichier "sur disque".
Par défaut, duvous donne la taille du fichier en nombre de blocs de disque, mais vous pouvez utiliser -hpour obtenir une unité lisible par l'homme à la place. Voir également le manuel de duvotre système.
Notez qu'avec GNU coreutil du(qui est probablement ce que vous avez sous Linux), -bobtenir des octets implique l' --apparent-sizeoption. Ce n'est pas ce que vous souhaitez utiliser pour obtenir le nombre d'octets réellement utilisés sur le disque. Utilisez plutôt --block-size=1ou -B 1.
Avec GNU ls, vous pouvez également le faire ls -s --block-size=1sur le fichier. Cela donnera le même numéro que du -B 1pour le fichier.
Exemple:
$ 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
Cela signifie qu'il s'agit d'un fichier de 512 Mo qui prend environ 24 Ko sur le disque. Il s'agit d'un fichier clairsemé (principalement des zéros qui ne sont pas réellement écrits sur le disque mais représentés comme des "trous" logiques dans le fichier). Les fichiers épars sont courants lorsque vous travaillez avec des fichiers volumineux pré-alloués, par exemple des images de disque pour des machines virtuelles ou des fichiers d'échange, etc. La création d'un fichier épars est rapide, tandis que le remplir avec des zéros est lent (et inutile).
Voir également le manuel de fallocatevotre système Linux.
dans quel cas cette différence est importante? pouvez-vous faire un exemple pratique? Merci d'avance.
D'Arcy Nader
1
@ D'ArcyNader Voir la réponse mise à jour.
Kusalananda
Corrigez-moi si je comprends mal quelque chose, mais il semble que la première phrase soit l'inverse: stackoverflow.com/a/31437673/3701431du montrerait combien de données peuvent être réellement lues, tout en lsmontrant dans quelle mesure les secteurs de disque sont alloués.
Sergiy Kolodyazhnyy
2
@SergiyKolodyazhnyy (désolé de répondre tardivement) Non, dumontre la quantité de disque réellement utilisée par le fichier, tandis que la taille apparente (taille logique) indiquée par lsest le nombre d'octets qu'un programme pourrait lire. Si le fichier est clairsemé, certains des octets de lecture seraient des zéros, mais ils seraient toujours remis au programme qui les a lus (mais pas à partir du disque).
Kusalananda
Ce fut une très bonne réponse.
Lizardx
3
J'obtiens la taille du fichier en octets comme ceci:
Réponses:
ls -l
vous donnera la taille apparente du fichier, qui est le nombre d'octets qu'un programme lirait s'il lisait le fichier du début à la fin.du
vous donnerait la taille du fichier "sur disque".Par défaut,
du
vous donne la taille du fichier en nombre de blocs de disque, mais vous pouvez utiliser-h
pour obtenir une unité lisible par l'homme à la place. Voir également le manuel dedu
votre système.Notez qu'avec GNU coreutil
du
(qui est probablement ce que vous avez sous Linux),-b
obtenir des octets implique l'--apparent-size
option. Ce n'est pas ce que vous souhaitez utiliser pour obtenir le nombre d'octets réellement utilisés sur le disque. Utilisez plutôt--block-size=1
ou-B 1
.Avec GNU
ls
, vous pouvez également le fairels -s --block-size=1
sur le fichier. Cela donnera le même numéro quedu -B 1
pour le fichier.Exemple:
Cela signifie qu'il s'agit d'un fichier de 512 Mo qui prend environ 24 Ko sur le disque. Il s'agit d'un fichier clairsemé (principalement des zéros qui ne sont pas réellement écrits sur le disque mais représentés comme des "trous" logiques dans le fichier). Les fichiers épars sont courants lorsque vous travaillez avec des fichiers volumineux pré-alloués, par exemple des images de disque pour des machines virtuelles ou des fichiers d'échange, etc. La création d'un fichier épars est rapide, tandis que le remplir avec des zéros est lent (et inutile).
Voir également le manuel de
fallocate
votre système Linux.la source
du
montrerait combien de données peuvent être réellement lues, tout enls
montrant dans quelle mesure les secteurs de disque sont alloués.du
montre la quantité de disque réellement utilisée par le fichier, tandis que la taille apparente (taille logique) indiquée parls
est le nombre d'octets qu'un programme pourrait lire. Si le fichier est clairsemé, certains des octets de lecture seraient des zéros, mais ils seraient toujours remis au programme qui les a lus (mais pas à partir du disque).J'obtiens la taille du fichier en octets comme ceci:
la source