- Dave McKay
@TheGurkha
- le 19 décembre 2019, 8:00 HAE
Lorsque vous utilisez Linux du
commande, vous obtenir à la fois le réel de l’utilisation du disque et de la vraie taille d’un fichier ou d’un répertoire. Nous expliquerons pourquoi ces valeurs ne sont pas les mêmes.
utilisation réelle du disque et taille réelle
la taille d’un fichier et l’espace qu’il occupe sur votre disque dur sont rarement les mêmes., L’espace disque est alloué dans les blocs. Si un fichier est plus petit qu’un bloc, un bloc entier lui est toujours alloué car le système de fichiers n’a pas une unité plus petite de biens immobiliers à utiliser.
sauf si la taille d’un fichier est un multiple exact de blocs, l’espace qu’il utilise sur le disque dur doit toujours être arrondi au bloc entier suivant. Par exemple, si un fichier est plus grand que deux blocs mais plus petit que trois, il faut toujours trois blocs d’espace pour le stocker.
Deux mesures sont utilisées par rapport à la taille du fichier., Le premier est la taille réelle du fichier, qui est le nombre d’octets de contenu qui composent le fichier. La seconde est la taille effective du fichier sur le disque dur. Il s’agit du nombre de blocs de système de fichiers nécessaires pour stocker ce fichier.
Un Exemple
prenons un exemple simple., Nous allons rediriger un seul caractère dans un fichier pour créer un fichier de petite taille:
echo "1" > geek.txt
Maintenant, nous allons utiliser le format long liste, ls
, de regarder la longueur du fichier:
ls -l geek.txt
La longueur est égale à la valeur numérique qui suit la balise dave dave
entrées, qui est de deux octets. Pourquoi est-ce deux octets alors que nous n’avons envoyé qu’un seul caractère au fichier? Jetons un coup d’œil à ce qui se passe dans le fichier.,
Nous utiliserons la commande hexdump
, qui nous donnera un nombre exact d’octets et nous permettra de « voir” les caractères non imprimables sous forme de valeurs hexadécimales. Nous utiliserons également l’option -C
(canonique) pour forcer la sortie à afficher les valeurs hexadécimales dans le corps de la sortie, ainsi que leurs équivalents de caractères alphanumériques:
hexdump -C geek.txt
la sortie nous montre que, à partir du décalage 00000000 dans le fichier, il y a valeur hexadécimale de 31, et une qui contient une valeur hexadécimale de 0a., La partie droite de la sortie représente ces valeurs sous forme de caractères alphanumériques, dans la mesure du possible.
la valeur hexadécimale de 31 est utilisée pour représenter le chiffre un. La valeur hexadécimale de 0A est utilisée pour représenter le caractère de saut de ligne, qui ne peut pas être affiché comme un caractère alphanumérique, il est donc affiché comme un point (.) plutôt. Le caractère de saut de Ligne est ajouté par echo
. Par défaut, echo
démarre une nouvelle ligne après avoir affiché le texte dont elle a besoin pour écrire dans la fenêtre du terminal.,
qui compte avec la sortie dels
et est d’accord avec la longueur du fichier de deux octets.
CONNEXES: Comment faire pour Utiliser la Commande ls pour lister les Fichiers et Répertoires sous Linux
Maintenant, nous allons utiliser la balise du
commande de regarder la taille du fichier:
du geek.txt
Il dit que la taille est de quatre, mais quatre de quoi?
il y a des blocs, puis il y a des blocs
lorsquedu
signale la taille des fichiers en blocs, la taille qu’il utilise dépend de plusieurs facteurs., Vous pouvez spécifier la taille de bloc qu’il doit utiliser sur la ligne de commande. Si vous ne forcez pas du
à utiliser une taille de bloc particulière, il suit un ensemble de règles pour décider laquelle utiliser.
tout d’abord, il vérifie les variables d’environnement suivantes:
- DU_BLOCK_SIZE
- BLOCK_SIZE
- BLOCKSIZE
Si l’une de ces variables existe, la taille du bloc est définie etdu
cesse de vérifier. Si aucun n’est défini, du
a par défaut une taille de bloc de 1 024 octets., À moins qu’une variable d’environnement appelée POSIXLY_CORRECT
est réglé. Si tel est le cas, du
a par défaut une taille de bloc de 512 octets.
alors, comment savoir laquelle est utilisée? Vous pouvez vérifier chaque variable d’environnement pour le résoudre, mais il existe un moyen plus rapide. Comparons les résultats à la taille de bloc que le système de fichiers utilise à la place.
pour découvrir la taille de bloc utilisée par le système de fichiers, nous utiliserons le programmetune2fs
., Nous allons ensuite utiliser l’option-l
(liste superbloc), canaliser la sortie viagrep
, puis imprimer les lignes contenant le mot « bloc.”
dans cet exemple, nous examinerons le système de fichiers sur la première partition du premier disque dur, sda1
, et nous devrons utiliser sudo
:
sudo tune2fs -l /dev/sda1 | grep Block
La Taille du bloc du système de fichiers est de 4 096 octets. Si nous divisons cela par le résultat obtenu à partir de du
(four), la taille de bloc par défaut de du
est de 1 024 octets., Nous savons maintenant plusieurs choses importantes.
tout d’abord, nous savons que la plus petite quantité de biens immobiliers du système de fichiers pouvant être consacrés au stockage d’un fichier est de 4 096 octets. Cela signifie que même notre petit fichier de deux octets occupe 4 Ko d’espace sur le disque dur.
la deuxième chose à garder à l’esprit est les applications dédiées aux rapports sur les statistiques du disque dur et du système de fichiers, telles quedu
,ls
, ettune2fs
, peuvent avoir différentes notions de ce que « bloc” signifie., L’applicationtune2fs
signale la taille réelle des blocs du système de fichiers, tandis quels
Etdu
peuvent être configurés ou forcés d’utiliser d’autres tailles de blocs. Ces tailles de blocs ne sont pas destinées à se rapporter à la taille de bloc du système de fichiers; ce ne sont que des « morceaux” que ces commandes utilisent dans leur sortie.
enfin, en plus d’utiliser différentes tailles de blocs, les réponses dedu
Ettune2fs
ont la même signification., Le résultattune2fs
était un bloc de 4 096 octets et le résultatdu
était quatre blocs de 1 024 octets.
en utilisant du
Sans paramètres ni options de ligne de commande,du
répertorie l’espace disque total utilisé par le répertoire courant et tous les sous-répertoires.
prenons un exemple:
du
la taille est indiquée dans la taille de bloc par défaut de 1 024 octets par bloc. L’arborescence entière du sous-répertoire est parcourue.,
en utilisant du sur un répertoire différent
Si vous voulez du
pour signaler un répertoire différent de celui actuel, vous pouvez passer le chemin d’accès au répertoire sur la ligne de commande:
du ~/.cach/evolution/
en utilisant du sur un fichier spécifique394bec0bd9″> pour signaler un fichier spécifique, passez le chemin d’accès à ce fichier sur la ligne de commande., Vous pouvez également passer une coque modèle à un sélectionner un groupe de fichiers, tels que les *.txt
:
du ~/.bash_aliases
Rapports sur les Fichiers dans les Répertoires
Pour du
rapport sur les fichiers dans le répertoire courant et de ses sous répertoires utiliser la balise -a
(tous les fichiers) option:
du -a
Pour chaque répertoire, la taille de chaque fichier est signalé, ainsi qu’un total pour chaque répertoire.,
limitation de la profondeur de L’arborescence des répertoires
Vous pouvez indiquer àdu
de lister l’arborescence des répertoires à une certaine profondeur. Pour ce faire, utilisez l’option-d
(profondeur maximale) et fournissez une valeur de profondeur en tant que paramètre. Notez que tous les sous-répertoires sont analysés et utilisés pour calculer les totaux rapportés, mais ils ne sont pas tous répertoriés. Pour définir une profondeur de répertoire maximale d’un niveau, Utilisez cette commande:
du -d 1
la sortie répertorie la taille totale de ce sous-répertoire dans le répertoire courant et fournit également un total pour chacun d’eux.,
Pour lister les répertoires un niveau plus profond, utilisez cette commande:
du -d 2
Réglage de la Taille de Bloc
Vous pouvez utiliser la balise block
option pour définir une taille de bloc de du
pour l’opération en cours.,d dans la taille de bloc la plus appropriée en fonction de l’espace disque utilisé par les répertoires et les fichiers, utilisez l’option -h
(lisible par l’homme):
du -h
pour voir la taille apparente du fichier plutôt que la quantité d’espace disque utilisé pour stocker le>option:
du --apparent-size
Vous pouvez combiner cela avec l’option -a
(all) pour voir la taille apparente de chaque fichier:
du --apparent-size -a
chaque fichier est répertorié, avec sa taille apparente.,
Afficher uniquement les totaux
Si vous souhaitez quedu
ne signale que le total du répertoire, utilisez l’option-s
(résumer)., Vous pouvez également combiner cela avec d’autres options, telles que l’option -h
(lisible par l’homme):
du -h -s
ici, nous l’utiliserons avec l’option --apparent-size
:
du --apparent-size -s
affichage des temps de modification
pour voir l’heure et la date de création ou de dernière modification, utilisez l’option --time
:
du --time -d 2
résultats étranges?,
Si vous voyez des résultats étranges dedu
, en particulier lorsque vous croisez des tailles à la sortie d’autres commandes, c’est généralement dû aux différentes tailles de blocs auxquelles différentes commandes peuvent être définies ou à celles par défaut. Cela pourrait également être dû aux différences entre la taille réelle des fichiers et l’espace disque requis pour les stocker.
Si vous devez faire correspondre la sortie d’autres commandes, expérimentez avec l’option--block
dansdu
.,
Dave McKay a utilisé pour la première fois des ordinateurs lorsque la bande de papier perforé était en vogue, et il a depuis programmé. Après plus de 30 ans dans l’industrie informatique, il est maintenant journaliste technologique à temps plein. Au cours de sa carrière, il a travaillé en tant que programmeur indépendant, responsable d’une équipe internationale de développement de logiciels, chef de projet de services informatiques et, plus récemment, en tant que délégué à la Protection des données. Dave est un évangéliste Linux et un défenseur de l’open source.Lire l’Intégrale «