Tengo un servidor Ubuntu 20.04 instalado en una sola unidad de 8 GB. La instalación predeterminada también tiene algunos "snap" instalados. Por lo tanto, hay algunos sistemas de archivos "squashfs" también informados por df
comando:
# df -mT
Filesystem Type 1M-blocks Used Available Use% Mounted on
/dev/root ext4 7877 1837 6025 24% /
devtmpfs devtmpfs 465 0 465 0% /dev
tmpfs tmpfs 477 0 477 0% /dev/shm
tmpfs tmpfs 96 1 95 1% /run
tmpfs tmpfs 5 0 5 0% /run/lock
tmpfs tmpfs 477 0 477 0% /sys/fs/cgroup
/dev/loop0 squashfs 18 18 0 100% /snap/amazon-ssm-agent/1566
/dev/loop1 squashfs 94 94 0 100% /snap/core/9066
/dev/loop2 squashfs 55 55 0 100% /snap/core18/1705
/dev/loop3 squashfs 69 69 0 100% /snap/lxd/14804
/dev/loop4 squashfs 70 70 0 100% /snap/lxd/14890
/dev/loop5 squashfs 55 55 0 100% /snap/core18/1754
tmpfs tmpfs 96 0 96 0% /run/user/1000
Como puede ver, solo hay 1837 MB de datos almacenados en el (único) disco.
Ahora, estoy probando la lista de uso de disco para cada directorio presente en la raíz (/
) usando el siguiente comando:
# du -smc /* 2>/dev/null
0 /bin
48 /boot
0 /dev
8 /etc
1 /home
0 /lib
0 /lib32
0 /lib64
0 /libx32
1 /lost+found
1 /media
1 /mnt
1 /opt
0 /proc
1 /root
1 /run
0 /sbin
1116 /snap
1 /srv
0 /sys
1 /tmp
1166 /usr
601 /var
2938 total
El resultado muestra una gran cantidad de espacio en disco utilizado por /snap
directorio, que por supuesto no es cierto.
¿Cuál es la forma correcta de contar el tamaño de los archivos que residen solo en sistemas de archivos de "disco real"? Agregando la opción -x
a du
no me hace sentir cómodo, porque en el futuro puede que tenga otro sistema de archivos de "disco real" montado en /home
por ejemplo y quiero que se cuente en du
salida.
Respuesta aceptada:
A diferencia de df
, que yo sepa du
no proporciona un --exclude-type
para omitir determinados tipos de sistemas de archivos. Sin embargo, puede excluir directorios de nivel superior específicos por patrón global:
du -smc --exclude=/snap /* 2>/dev/null
o (para excluir también los sistemas de archivos efímeros) y suponiendo que su shell admita la expansión de llaves:
du -smc --exclude=/{proc,run,sys,snap} /* 2>/dev/null