Les fichiers fragmentés sont des fichiers auxquels de grandes quantités d'espace sont préallouées, sans occuper la totalité de la quantité du système de fichiers. Ils sont utiles pour réduire le temps et l'espace disque nécessaires à la création de systèmes de fichiers en boucle ou de grandes images de disque pour les invités virtualisés, entre autres. Le terme « fichier fragmenté » est utilisé pour désigner un fichier contenant des « trous » ; il est facile d'en reconnaître un sur un système en cours d'exécution car son utilisation du disque est inférieure à sa taille. Nous pouvons voir ce comportement avec /var/log/lastlog fichier.
# ls -lh /var/log/lastlog -rw-r--r--. 1 root root 286K Dec 3 04:50 /var/log/lastlog # du -sh /var/log/lastlog 12K /var/log/lastlog
Rechercher des fichiers fragmentés
Maintenant, le processus ci-dessus peut identifier les fichiers épars dans le système, mais il devient fastidieux de trouver tous les fichiers épars dans un système de fichiers ou un répertoire, surtout lorsqu'ils sont nombreux. Ne vous inquiétez pas, il existe une option dans la commande find qui nous aide à trouver tous les fichiers épars en une seule fois. Voyons un exemple ci-dessous.
1. Utilisez la commande de recherche avec "%S ” pour trouver la rareté de chaque fichier.
# find /var/log -type f -printf "%S\t%p\n" # find /var/log -type f -printf "%S\t%p\n" 1 /var/log/tallylog 1.00095 /var/log/audit/audit.log.1 0.0419982 /var/log/lastlog ....
2. La valeur affichée dans la colonne la plus à gauche est (BLOCK-SIZE*st_blocks / st_size ) qui est normalement inférieur à 1.0 en cas de fichier fragmenté.
3. Si vous voulez trouver tous les fichiers épars sur le système, nous pouvons filtrer tous les fichiers avec les valeurs de colonne les plus à gauche inférieures à 1.
# find / -type f -printf "%S\t%p\n" | gawk '$1 < 1.0 {print}' 0.0139994 /var/log/lastlog 0.959592 /usr/lib/locale/locale-archive ...