¿Por qué ncdu informa datos diferentes a los de df?

¿Por qué ncdu informa datos diferentes a los de df?

df -hhuellas dactilares:

Filesystem      Size  Used Avail Use% Mounted on
/dev/root        59G  6.6G   50G  12% /
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           2.0G  9.0M  1.9G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mmcblk0p1  253M   54M  199M  22% /boot
tmpfs           391M     0  391M   0% /run/user/1000

mientras ncdu /imprime:

Total disk usage:   1.8 GiB  Apparent size:   1.8 GiB  Items: 176500

¿Por qué uno informa 6,6+ GiB mientras que el otro solo informa 1.8 GiB?

Respuesta1

El resultado de dfse basa en estadísticas a nivel del sistema de archivos, mientras que ncdu(y un regular du) genera sus resultados escaneando directorios, leyendo los tamaños de archivos individuales y resumiéndolos.

Si los ducomandos -style se ejecutan como un usuario no root, no será necesario que tengan acceso completo a todos los directorios y, por lo tanto, es posible que no puedan verlo todo (úselo sudo ncduen este caso).

Intente ejecutar du -hs /y comparar sus resultados con el "uso total del disco" informado por ncdu /. Es posible que los resultados sean similares... y con du, es posible que también vea mensajes sobre un grupo de directorios a los que el comando no puede acceder y, por lo tanto, no los tiene en cuenta. Probablemente ocurra lo mismo con ncdu, pero simplemente oculta los mensajes de error.

Además, me parece que ncdues posible que no se haya actualizado para comprender los sistemas de archivos virtuales de las distribuciones modernas de Linux y que pueda confundirse con ellos. En mi sistema Debian 10, ncdu /informa:

Total disk usage:  75.6 GiB  Apparent size: 128.1 TiB  Items: 469143

En mi caso, el "Tamaño aparente" es claramente un disparate y una inutilidad. El "Uso total del disco" es aproximadamente el mismo que obtengo con du -hs /... pero debido a que incluye varios sistemas de archivos virtuales basados ​​en RAM ( devtmpfs, tmpfs), es poco probable que este número sea muy útil.

Pero si restrinjo el comando a un solo sistema de archivos (por ejemplo ncdu -x /), parece que obtengo resultados más razonables, que también coinciden con la salida de du -shx /dentro de un error de redondeo, y también con la salida de df -hcuando recuerdo que un sistema de archivos puede necesitar algo de espacio para su metadatos internos.

Otra posible fuente de errores sería si está utilizando funciones avanzadas del sistema de archivos, como instantáneas del sistema de archivos BTRFS. Claro, es posible que solo tenga 1,8 GiB de archivos en su sistema de archivos raíz, pero si el sistema de archivos también contiene dos instantáneas de sus estados anteriores, la cantidad total de espacio en disco utilizado podría ser hasta 3 veces mayor que la suma del tamaño de los archivos. usted (y cualquier ducomando similar) esperar.

Dado que el dfcomando obtiene su información preguntando al controlador del sistema de archivos, el valor "usado" más grande que informa podría incluir las instantáneas, que de otro modo podrían ser invisibles hasta que se acceda a ellas con el método adecuado.

información relacionada