Introducción
Al enumerar el contenido de un directorio usando el ls
, puede notar que el tamaño de los directorios es casi siempre de 4096 bytes (4 KB). Este es el tamaño del espacio en disco utilizado para almacenar la metainformación del directorio, no lo que contiene.
El comando que querrá usar para obtener el tamaño real de un directorio es du
, que es la abreviatura de uso de disco.
Obtener el tamaño de un directorio
El du
muestra la cantidad de espacio utilizado por los archivos o directorios especificados. Si la ruta especificada es un directorio, du
resume el uso de disco de cada subdirectorio en ese directorio. Si no se especifica ninguna ruta, du
informa del uso del disco del directorio de trabajo actual.
Cuando se invoca sin ninguna opción, du
muestra el uso de disco del directorio especificado y cada uno de sus subdirectorios en bytes.
Normalmente, desea ver el espacio ocupado por el directorio en un formato legible por humanos. Por ejemplo, para obtener el tamaño total del /var
, ejecute el siguiente comando:
sudo du -sh /var
La salida se verá así:
85G /var
Explicamos el comando y sus argumentos:
- El comando comienza con
sudo
porque la mayoría de los archivos y directorios dentro del directorio/var
son propiedad del usuario root y los usuarios normales no pueden leerlos. Si omitesudo
eldu
, se imprimirá "du: no se puede leer el directorio". s
: muestra solo el tamaño total del directorio especificado, no muestra los totales de tamaño de archivo para los subdirectorios.h
: tamaño de impresión en unh
(formato legible por humanos)./var
: la ruta al directorio del que desea obtener el tamaño.
¿Qué sucede si desea ver el uso del disco de los subdirectorios de nivel superior? Tienes dos opciones. La primera es utilizar el símbolo de asterisco ( *
) como se muestra a continuación, que significa "coincidir con cualquier cosa que no comience con un punto ( .
)". La -c
le dice al du
que imprima un total general de todas las dimensiones:
sudo du -shc /var/*
24K /var/db
4.0K /var/empty
4.0K /var/games
77G /var/lib
4.0K /var/local
0 /var/lock
3.3G /var/log
0 /var/mail
4.0K /var/opt
0 /var/run
196K /var/spool
28K /var/tmp
85G total
Otra forma de obtener un informe sobre el uso del disco de los subdirectorios de nivel superior es utilizar la opción --max-depth
sudo du -h --max-depth=1 /var
77G /var/lib
24K /var/db
4.0K /var/empty
4.0K /var/local
4.0K /var/opt
196K /var/spool
4.0K /var/games
3.3G /var/log
5.0G /var/cache
28K /var/tmp
85G /var
85G total
De forma predeterminada, el du
muestra el espacio en disco utilizado por el directorio o archivo. Para encontrar el tamaño aparente de un directorio, use la opción --apparent-size
El "tamaño aparente" de un archivo es la cantidad de datos que hay realmente en el archivo.
sudo du -sh --apparent-size /var
Al transferir un directorio a través de SCP, Rsync o SFTP, la cantidad de datos transferidos a través de la red es el tamaño aparente de los archivos. Esta es la razón por la que el tamaño del espacio en disco utilizado en la fuente cuando se ve con du
(sin --apparent-size
) no es igual al tamaño en el destino.
El du
también se puede combinar con otros comandos canalizados.
Por ejemplo, para imprimir las 5 mayores directorios dentro del /var
directorio, es necesario redirigir el du
de salida para el sort
de comando para ordenar los directorios por su tamaño y luego redirigir la salida a la head
de comandos que sólo se imprimirán los 5 primeros directorios:
sudo du -h /var/| sort -rh | head -5
85G /var/77G /var/lib
75G /var/lib/libvirt/images
75G /var/lib/libvirt
5.0G /var/cache/pacman/pkg
Conclusión
En Linux, puede obtener el tamaño de un directorio usando el comando du