El du (uso del disco) es el comando que se usa en Linux para verificar el tamaño del directorio, incluidos sus otros contenidos, así como el tamaño de los archivos individuales.
Cuando los archivos y directorios comenzaron a consumir una gran cantidad de espacio en disco en sus discos duros, du es el mejor comando para saber qué directorios o archivos están causando esto.
En este tutorial, aprendemos cómo usar el comando du en Linux para verificar el uso del disco (archivos o directorios).
Comando Du y sintaxis
La siguiente línea muestra la sintaxis del comando du:
du [options] [file or directory name]
De forma predeterminada, sin ninguna opción, muestra el uso del disco del archivo o directorio dado y para cada uno de los subdirectorios en bytes. Si no se menciona ningún nombre de archivo o directorio, du commad muestra el uso del disco del directorio de trabajo actual.
# du /boot
2508 /boot/grub2/fonts
3068 /boot/grub2/i386-pc
5592 /boot/grub2
4 /boot/efi/EFI/centos
8 /boot/efi/EFI
12 /boot/efi
16 /boot/loader/entries
20 /boot/loader
152440 /boot
Du comando con -a
La opción imprime el uso del disco de todos los archivos dentro del directorio.
# du -a /boot
7920 /boot/vmlinuz-4.18.0-147.5.1.el8_1.x86_64
3752 /boot/System.map-4.18.0-147.5.1.el8_1.x86_64
4 /boot/grub2/device.map
4 /boot/grub2/grub.cfg
4 /boot/grub2/grubenv
2504 /boot/grub2/fonts/unicode.pf2
2508 /boot/grub2/fonts
8 /boot/grub2/i386-pc/cs5536.mod
4 /boot/grub2/i386-pc/gcry_rsa.mod
8 /boot/grub2/i386-pc/lsacpi.mod
52 /boot/grub2/i386-pc/gcry_camellia.mod
4 /boot/grub2/i386-pc/cpio_be.mod
......
152440 /boot
Puede ver que imprime el tamaño total al final del comando donde '152440' es el tamaño total (en bytes) del directorio '/boot'.
Obtener el tamaño total del directorio especificado
Para mostrar el tamaño total de un directorio específico, debe usar la opción -s pero no informará los subdirectorios. El siguiente ejemplo muestra el tamaño total del directorio '/boot'.
# du -s /boot
152440 /boot
Puede imprimir el uso total del disco desde varios directorios de la siguiente manera:
# du -s /boot /var
152440 /boot
332168 /var
Formato legible por humanos
Hasta ahora, vemos que el tamaño del disco se muestra en bytes, que no es un formato legible por humanos. Para imprimir la salida en kilobyte (K), megabyte (M) y gigabyte (G) tenemos que usar -h
opción.
# du -h /boot
2.5M /boot/grub2/fonts
3.0M /boot/grub2/i386-pc
5.5M /boot/grub2
4.0K /boot/efi/EFI/centos
8.0K /boot/efi/EFI
12K /boot/efi
16K /boot/loader/entries
20K /boot/loader
149M /boot
El --si
la opción es como -h
pero usa potencias de 1000 en lugar de 1024.
# du --si /boot
2.6M /boot/grub2/fonts
3.2M /boot/grub2/i386-pc
5.8M /boot/grub2
4.1k /boot/efi/EFI/centos
8.2k /boot/efi/EFI
13k /boot/efi
17k /boot/loader/entries
21k /boot/loader
157M /boot
Para obtener el tamaño total de un directorio específico en un formato legible por humanos, que se usa con mucha frecuencia en el comando du, use el siguiente comando:
# du -sh /boot
149M /boot
Combinar tamaño total general
Esto es muy útil cuando desea combinar el tamaño total en varios directorios. El siguiente ejemplo del comando combine (-c
) el tamaño total del disco especificado (-s
) directorio '/boot' y '/var' e imprima en la última línea en formato legible por humanos (-h
):
# du -csh /boot/ /var
149M /boot/
317M /var
466M total
Mostrar el tamaño individual de todos los archivos y directorios
Usando comodines (*) podemos imprimir el tamaño individual de cada archivo y directorio y luego combinar el tamaño total para imprimir en la última línea.
# du -csh /boot/*
184K /boot/config-4.18.0-147.5.1.el8_1.x86_64
180K /boot/config-4.18.0-80.7.1.el8_0.x86_64
12K /boot/efi
0 /boot/grub
5.5M /boot/grub2
53M /boot/initramfs-0-rescue-3e729c2d7c094902af0333ce40564ffe.img
23M /boot/initramfs-4.18.0-147.5.1.el8_1.x86_64.img
23M /boot/initramfs-4.18.0-80.7.1.el8_0.x86_64.img
16M /boot/initramfs-4.18.0-80.7.1.el8_0.x86_64kdump.img
20K /boot/loader
3.7M /boot/System.map-4.18.0-147.5.1.el8_1.x86_64
3.6M /boot/System.map-4.18.0-80.7.1.el8_0.x86_64
7.6M /boot/vmlinuz-0-rescue-3e729c2d7c094902af0333ce40564ffe
7.8M /boot/vmlinuz-4.18.0-147.5.1.el8_1.x86_64
7.6M /boot/vmlinuz-4.18.0-80.7.1.el8_0.x86_64
149M total
Comando Du con coincidencia de patrones
Con el comando du puede realizar la coincidencia de patrones. En el siguiente comando, muestra cómo encontrar el tamaño de disco de todos los directorios que comienzan con 'bo'.
# du -sch /bo*
149M /boot
217M /bootstrap
366M total
Usando el comando du para obtener el tamaño aparente
El --apparent-size
La opción imprime tamaños aparentes (cantidad real de datos en el archivo) en lugar del uso del disco.
# du --apparent-size /boot
2505 /boot/grub2/fonts
2544 /boot/grub2/i386-pc
5057 /boot/grub2
4 /boot/efi/EFI/centos
8 /boot/efi/EFI
12 /boot/efi
6 /boot/loader/entries
10 /boot/loader
151852 /boot
Verifique el tamaño del directorio que incluye enlaces duros
Usando el -l
o --count-links
opción, los tamaños se cuentan muchas veces si están vinculados. De forma predeterminada, los enlaces duros no se muestran.
Por ejemplo
# ls -li
total 648
755150 -rw-r--r-- 1 root root 4719 Apr 19 00:46 file1
755152 -rw-r--r-- 2 root root 312519 Apr 19 00:47 file2
755152 -rw-r--r-- 2 root root 312519 Apr 19 00:47 file2.hard
755153 lrwxrwxrwx 1 root root 19 Apr 19 00:57 file2.soft -> /etc/sysconfig/init
Aquí, file2.hard es el enlace duro para file2. Ahora observe la salida con -l
y sin ella.
# du -ah
4.0K ./file2.soft
316K ./file2
12K ./file1
340K .
# du -ahl
4.0K ./file2.soft
316K ./file2
12K ./file1
316K ./file2.hard
656K .
El comportamiento predeterminado de los enlaces simbólicos es no desreferenciarlos. Para desreferenciar enlaces simbólicos, -L
o --dereference
se utiliza la opción
# du -ahL
8.0K ./file2.soft
316K ./file2
12K ./file1
344K .
(Tenga en cuenta que el tamaño de file2.soft ha cambiado ahora)
El -P
o --no-dereference
La opción no elimina la referencia a estos enlaces simbólicos (que es el comportamiento predeterminado como se indicó anteriormente).
Mostrar el uso del disco en subdirectorios de nivel 'N'
Esta opción le indica al comando du que enumere los subdirectorios y su tamaño a nuestro nivel de profundidad deseado.
Por ejemplo, el siguiente ejemplo enumera los directorios del primer nivel solo en el árbol de directorios actual y su tamaño. Incluso el consumo total de espacio también se informa aquí. En caso de que establezcamos --max-depth=
a cero, entonces el comando du no listará ningún subdirectorio y solo informará el tamaño del directorio seleccionado.
# du --max-depth=1 -h /boot/
7.1M /boot/grub
110M /boot/
Comando Du para excluir archivos
El comando Du puede excluir un directorio específico usando --exclude
opción. En el siguiente ejemplo, excluí el directorio 'grub2':
# du --exclude=grub2 /boot/
4 /boot/efi/EFI/centos
8 /boot/efi/EFI
12 /boot/efi
16 /boot/loader/entries
20 /boot/loader
146848 /boot/
A continuación se muestran dos ejemplos para mostrarle cómo excluir archivos '*.obj' o '*.jpg'.
# du -h –exclude=’*.obj’
# du -h –exclude=’*.jpg’
Utilice el comando du para imprimir la hora de modificación
El tiempo de modificación de archivos y/o directorios (o de archivos/directorios en los subdirectorios) se puede mostrar con --time
opción.
# du /boot/ --time
4 2017-03-23 15:03 /boot/grub/locale
2348 2017-03-23 15:03 /boot/grub/fonts
2480 2017-03-23 15:03 /boot/grub/i386-pc
7212 2017-04-05 08:31 /boot/grub
112180 2017-04-05 08:31 /boot/
Usar du con otros comandos
El comando du se puede combinar con otro comando usando tuberías (|). Veamos algunos ejemplos
Si queremos encontrar los 3 directorios principales por tamaño en el directorio de trabajo actual:
# du -skh * | sort -nr | head -3
386M lib
252M share
154M lib64
Mostrar todos los archivos y directorios ordenados por tamaño:
# du -sk * | sort -n
12160 libexec
37552 sbin
58900 bin
70048 src
157456 lib64
257492 share
394504 lib
Conclusión
En este tutorial, aprendimos a usar el comando du en Linux para estimar el uso del disco para archivos y directorios. Espero que haya disfrutado de la lectura y deje sus sugerencias en la sección de comentarios a continuación.