tailles du système de files stat

Avec la version stat 8.13 sur Linux sous Debian – entre autres – les directives FORMAT suivantes ( --format= ) sont proposées:

En combinaison avec --file-system ( -f ):

  • %s Taille de bloc (pour les transferts plus rapides)
  • %S Taille de bloc fondamentale (pour le nombre de blocs)

Question (s) : Que signifie exactement?

Ma meilleure estimation est que %s , %S est égal à %b (affichage dans les blocs) et %B (taille du bloc d'affichage), où ces derniers sont pour les files et les deux premiers pour les filesystems. Est-ce exact?

  %S fundamental block size (for block counts) 

vous indique la taille de chaque bloc sur le système de files. Sur la plupart des filesystems, c'est la plus petite quantité d'espace que n'importe quel file peut prendre. Chaque file utilise un multiple de ceci.

Par exemple,

 $ echo > a # create a file containing a single byte $ du -ha # see how much disk space it's using 4.0K a $ stat -f -c '%S' . # see what stat thinks the block size is 4096 $ tune2fs -l /dev/mydrive | grep '^Block size' 4096 

Je ne suis pas sûr à 100% que cela fonctionne toujours comme ça. Par exemple, je m'attends à ce qu'il puisse aussi décider d'imprimer 512 ou 1024 , même si la taille du bloc sous-jacent est différente, à condition stat -c %b FILE * stat -f -c %S FILE = du --block-size=1 FILE . La mise en œuvre exacte dépend du système de files.


 %s block size (for faster transfers) 

suggère combien d'octets vous devriez lire à la fois si vous copyz de gros files, par exemple ce que vous devriez utiliser comme paramètre bs (blocksize) lors de l'utilisation de dd . Mais sur les systèmes que j'ai vérifiés, il imprime toujours 4096 , même lorsque les valeurs plus grandes peuvent être plus rapides. Voir Y at-il un moyen de déterminer la valeur optimale pour le paramètre bs à dd? pour plus de discussion à ce sujet.


Techniquement, cette information (et toutes les informations de stat -f ) provient de l'appel système statvfs .

%s correspond au champ f_bsize , et %S est f_frsize .

Donc, vous pouvez regarder dans leurs significations précises en commençant par la page de manuel statvfs

  unsigned long f_bsize; /* Filesystem block size */ unsigned long f_frsize; /* Fragment size */