J'ai besoin d'obtenir la taille du répertoire dans le terminal à des fins de signature. J'utilise la commande suivante:
du -s /path/to/dir
Je multiplie le résultat par la taille de bloc UNIX traditionnelle (512 octets) et j'obtiens la taille réelle du répertoire en octets. Cependant, la fenêtre de dialogue "Get Info" du Finder affiche la taille légèrement inférieure à celle calculée avec la commande de terminal. Et il semble qu'il soit reproductible sur n'importe quel dossier / bundle. Qu'est-ce que je rate?
la source
actual
ouapparent
. (Voir également mon explication mise à jour).À propos de Mac OS X et du Finder (dans Snow Leopard, version 10.6.8), j'ai remarqué ce qui suit.
bash
(1)) ci-dessous.Pour autant que j'ai vu mes chiffres `` quantifiés '' sont les mêmes que les chiffres `` quantifiés '' dans le Finder .
BLOCKSIZE
définie dans mon shell, mais j'ai testé (maintenant, un peu) les deux versions et les valeurs par défaut de$BLOCKSIZE
donne les mêmes valeurs.La seule chose que je peux dire est que je me rapproche en comptant uniquement les fichiers (excluant ainsi le répertoire ~ 'méta-index / en-tête du système de fichiers' ~ données) et que le plus proche que j'obtiens est avec ce qui suit.
du
(1) ni (gnu)gdu
(1) ne semblent compter les attributs étendus (xattr
)Et puis je dois juste punir «Courez le chemin et faites le calcul»
Paix et bonne nuit pour cette fois.
la source
Sur mon système Ubuntu, en utilisant ext4,
du -b file
donne la taille en octets d'un fichier réel, etdu -b dir
donne la taille en octets du fichier (s) + surcharge du répertoire, la surcharge est, dans mon cas, des multiples de 4096 octets ..Cette surcharge augmente à mesure que le nombre de fichiers augmente.
Remarque: même si les fichiers sont supprimés, la surcharge du répertoire reste au niveau supérieur où elle se trouvait avant la suppression des fichiers.
Je n'ai pas essayé de redémarrer, pour voir s'il revient, mais dans les deux cas, cela signifie que la taille du répertoire varie en fonction des circonstances historiques.
Compter la taille de chaque fichier peut être la meilleure option pour une valeur précise de la taille totale des fichiers .
Le script suivant totalise toutes les tailles de fichiers (en octets).
Pour OS X, si vous n'avez pas l'
-b
opton pour 'du', vous pouvez utiliser à lastat
place. (Si vous l'avez :) ... La ligne commentée montre l'stat
alternative Ubuntu àdu -b
;la source
du -b
et différentstat
. Votre script n'est pas portable en dehors de Linux de toute façon.coreutils
pour obtenir la version GNU dedu
asgdu
. Donc, ce n'est pas exactement portable, mais peut être utile pour les personnes sous OS X pour obtenir les versions GNU de quelques utilitaires de base.Additionnez tous les fichiers dans un répertoire:
OSX:
find dir ! -type d -print0 | xargs -0 stat -f '%z' | awk '{sum += $1} END{print sum}'
Linux:
find dir ! -type d -printf "%s\n" | awk '{sum += $1} END{print sum}'
la source
find: unrecognized: -printf
. Image alpine