[gull] Taille d'un répertoire vide
Daniel Cordey
dc at mjt.ch
Wed Jan 30 15:15:12 CET 2008
On Wednesday 30 January 2008, Philippe Ney wrote:
> Après avoir effacer tous les fichiers, la taille du répertoire est
> encore de 3 Mo.
>
> Un touch du répertoire ou du . qu'il contient ou la création d'un
> fichier vide à l'intérieur du répertoire n'a aucun effet.
>
> Y a-t-il un moyen de libérer les blocks inutilisés et faire revenir
> la taille du répertoire à 4k ?
Tout-a-fait normal !
Il faut revenir a la maniere dont le FS (file systeme) est organise ! Un
directory n'est rien d'autre qu'un "fichier" de data, contenant les
information necessaire a l'acces du contenu du directory. DOnc, lors de la
creation d'un directory vide, un premier block de 4k est alloue a ce
directory pour y stocker ses infos. ceci peut se voir en faisant :
mkdir mydir
ls -ld mydir
Puis, a mesure que le directory se remplit, les entrees viennent occuper de la
place dans le block de 'data'. A un moment donne, celui-ci est plein et
engendre l'attribution d'un autre block de 4k "au" directory. ET ainsi de
suite. Raison pour laquelle, on peut determiner aproximativement le nombre
maximum de "contenu" d'un directory par l'examen de sa taille. Or, le FS
attribue des blocks lorsqu'un fichier s'etend en taille, mais ne libere pas
ceux-ci sans une commande explicite de "troncation". Ce genre de commande
n'existe pas pour les directories... Il est donc necessaire de "re-creer" le
directory pour en reduire la taille. On peut donc envisager :
mkdir newdir
mv currentdir/* newdir
rmdir currentdir
mv newdir currentdir
Il n'est bien sur pas necessaire de passer par la phase de deplacement des
fichiers d'un directory sui celui-ci est deja vide.
dc
More information about the gull
mailing list