Los archivos dispersos son archivos que tienen grandes cantidades de espacio preasignado, sin ocupar la totalidad del espacio del sistema de archivos. Son útiles para reducir la cantidad de tiempo y espacio en disco involucrados en la creación de sistemas de archivos en bucle o imágenes de disco grandes para invitados virtualizados, entre otras cosas. El término "archivo disperso" se utiliza para referirse a uno que contiene "agujeros"; es fácil reconocer uno en un sistema en ejecución porque su uso de disco es menor que su tamaño. Podemos ver este comportamiento con /var/log/lastlog archivo.
# 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
Encontrar archivos dispersos
Ahora, el proceso anterior puede identificar los archivos dispersos en el sistema, pero se vuelve engorroso encontrar todos los archivos dispersos en un sistema de archivos o directorio, especialmente cuando son muchos. No se preocupe, hay una opción en el comando de búsqueda que nos ayuda a encontrar todos los archivos dispersos de una sola vez. Veamos un ejemplo a continuación.
1. Use el comando de búsqueda con “%S ” para encontrar la escasez de cada archivo.
# 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. El valor que se muestra en la columna más a la izquierda es (BLOCK-SIZE*st_blocks / st_size ) que normalmente es menor que 1.0 en caso de un archivo disperso.
3. Si desea encontrar todos los archivos dispersos en el sistema, podemos filtrar todos los archivos con los valores de la columna más a la izquierda inferiores a 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 ...