¿En qué circunstancias se ls -lh
mostrará un total menor que la suma de los archivos individuales? Por ejemplo:
$ ls -lh /var/lib/nova/instances/_base
total 100G
-rw-rw-r-- 1 nova nova 4.3M 2012-02-14 14:07 00000001
-rw-rw-r-- 1 nova nova 5.7M 2012-02-14 14:07 00000002
-rw-rw-r-- 1 nova nova 42G 2012-03-08 15:24 1574bddb75c78a6fd2251d61e2993b5146201319.part
-rw-rw-r-- 1 libvirt-qemu kvm 24M 2012-02-14 14:07 77de68daecd823babbb58edb1c8e14d7106e83bb_sm
-rw-r--r-- 1 libvirt-qemu kvm 65G 2012-03-02 12:43 bd307a3ec329e10a2cff8fb87480823da114f8f4
-rw-rw-r-- 1 libvirt-qemu kvm 160G 2012-02-24 16:06 ephemeral_0_160_None
-rw-rw-r-- 1 libvirt-qemu kvm 80G 2012-02-24 22:38 ephemeral_0_80_None
-rw-r--r-- 1 libvirt-qemu kvm 10G 2012-02-24 22:37 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f
-rw-r--r-- 1 libvirt-qemu kvm 10G 2012-02-24 11:09 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f_sm
Editar: ahora se muestran algunas banderas adicionales por solicitud en el comentario:
$ ls -aiFlh /var/lib/nova/instances/_base/
total 143G
29884440 drwxrwxr-x 2 nova nova 4.0K 2012-03-08 15:45 ./
29884427 drwxr-xr-x 6 nova nova 4.0K 2012-03-08 15:05 ../
29884444 -rw-rw-r-- 1 nova nova 4.3M 2012-02-14 14:07 00000001
29884445 -rw-rw-r-- 1 nova nova 5.7M 2012-02-14 14:07 00000002
29884468 -rw-r--r-- 1 nova nova 65G 2012-03-08 15:59 1574bddb75c78a6fd2251d61e2993b5146201319.converted
29884466 -rw-rw-r-- 1 nova nova 58G 2012-03-08 15:35 1574bddb75c78a6fd2251d61e2993b5146201319.part
29884446 -rw-rw-r-- 1 libvirt-qemu kvm 24M 2012-02-14 14:07 77de68daecd823babbb58edb1c8e14d7106e83bb_sm
29884467 -rw-r--r-- 1 libvirt-qemu kvm 65G 2012-03-02 12:43 bd307a3ec329e10a2cff8fb87480823da114f8f4
29884443 -rw-rw-r-- 1 libvirt-qemu kvm 160G 2012-02-24 16:06 ephemeral_0_160_None
29884442 -rw-rw-r-- 1 libvirt-qemu kvm 80G 2012-02-24 22:38 ephemeral_0_80_None
29884447 -rw-r--r-- 1 libvirt-qemu kvm 10G 2012-02-24 22:37 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f
29884441 -rw-r--r-- 1 libvirt-qemu kvm 10G 2012-02-24 11:09 fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f_sm
files
ls
disk-usage
Lorin Hochstein
fuente
fuente
ls -aiFl
hdu -h --total
para el mismo directorio?Respuestas:
Sucederá si tiene archivos dispersos:
Un archivo disperso es un archivo que no se ha rellenado con bloques del sistema de archivos (o solo parcialmente). Cuando lea una zona no poblada de un archivo disperso obtendrá ceros. Dichas zonas en blanco no requieren espacio en disco real, y el 'total' informado
ls
corresponde al espacio en disco ocupado por los archivos (al igual quedu
).fuente
-s
/--size
"Imprime la asignación de disco de cada archivo a la izquierda del nombre del archivo. Esta es la cantidad de espacio en disco utilizado por el archivo, que generalmente es un poco más que el tamaño del archivo, pero puede será menor si el archivo tiene agujeros ". La-l
opción, por supuesto, también imprime el tamaño.Tenga en cuenta que la salida dada por
ls -l
ydu
tiene una diferencia sutil pero muy importante. Prueba esto:Ahora
Mientras
Esto se debe a que el sistema de archivos asigna el tamaño en trozos de 4096 (en mi caja de Linux). Se llama IO Block. Puedes ver esto por:
fuente
stat
mi propuestaempty-file
, y verá que la cantidad de Bloques es 0, incluso si se informa que el archivo tiene un tamaño de 1G.stat
informa el número equivalente de bloques de tamaño antiguo necesarios para almacenar todos los bloques de 4K (es decir, 8 veces el número real de bloques de 4K).La respuesta aceptada es absolutamente correcta, solo si desea ver el tamaño aparente, puede usar:
du --apparent-size
fuente