Cómo obtener el tamaño de un directorio en Linux

How Get Size Directory Linux



Conocer el tamaño de un directorio en Linux no es tan sencillo como parece. El comando ls -s listará los archivos y subdirectorios con sus tamaños. Sin embargo, los tamaños (alrededor de 4096 bytes) dados para los directorios no corresponden al uso del disco. El tamaño que se ve para un directorio es el tamaño de los metadatos del directorio.

Los metadatos son datos sobre datos. El tamaño aparente es el tamaño de los datos que le interesan al usuario normal de la computadora. El contenido (texto) de las cartas, imágenes, videos, etc. del usuario constituyen el tamaño aparente. Estos datos no se guardan arbitrariamente en la computadora. Los datos de tamaño aparente deben mantenerse de forma controlada. Debe ser identificable. Debe estar completo. Hay otros requisitos para ello. Se necesitan algunos datos adicionales para lograr estos requisitos adicionales, y estos datos adicionales son los metadatos.







Recuerde, solo hay un directorio en un volumen. El resto son subdirectorios. El directorio raíz da lugar a subdirectorios, que dan lugar a la caída de otros subdirectorios. Sin embargo, los subdirectorios generalmente se denominan simplemente directorios. Y así, solo hay un árbol de directorios.



Entonces, ls -s no es útil para obtener el tamaño de un directorio. Entonces, ¿qué comando es útil? - El comando du. du son las siglas de Disk Usage. Imprime el uso de disco del directorio.



Este artículo explica las diferentes características del comando du en Linux, que proporciona las diferentes formas del programador para conocer los tamaños de los directorios y sus subdirectorios. Bash es el shell utilizado para los ejemplos de código de este artículo.





Contenido del artículo

du sin opción o argumento

El directorio de trabajo actual es el directorio en el que el usuario está trabajando actualmente. El indicador normalmente muestra el directorio de trabajo actual. Escribiendo du sin ninguna opción y argumento, así:



de

y luego presionar la tecla Enter mostrará el uso del disco para todos los subdirectorios del directorio de trabajo actual. Mostrará esta información para el subárbol del directorio de trabajo actual. Un punto en la pantalla representa el directorio de trabajo actual.

Cada ruta del subárbol se representa en una línea, en la pantalla. Cada línea comienza con el tamaño del directorio (que es el apellido en la ruta). La pantalla puede ser algo como:

8./dir1/dir2/dir3/dir4

12./dir1/dir2/dir3

16./dir1/dir2

20./dir1

Tenga en cuenta que no está claro si el tamaño está en bytes o kilobytes o megabytes o gigabytes. Kilobytes de símbolo, K significa 1024 bytes; Megabytes de símbolo, M significa 1.048.576 bytes; Gigabytes de símbolo, G significa 1.073.741.824 bytes. Para que se indiquen los múltiplos, se debe usar la opción -h (interruptor), de la siguiente manera:

de -h

La pantalla se vería así:

8.0K./dir1/dir2/dir3/dir4

12K./dir1/dir2/dir3

16K./dir1/dir2

20K./dir1

Cuando se usa la opción -h, se dice que los tamaños están en una forma legible.

Nota: con la opción –all, el comando du también proporcionará el uso del disco para los archivos; sin embargo, en este artículo no se abordará el uso de disco para archivos.

Tamaño de otros directorios

Una ruta absoluta típica para un volumen de Linux es la siguiente:

/hogar/John/decir/dirTwo/dirThree/dirFour

El primero / es el directorio raíz. Este directorio tiene subdirectorios inmediatos, incluido el directorio de inicio. El directorio de inicio tiene el directorio del usuario. Si el nombre del usuario es John, entonces puede nombrar el directorio del usuario, john. El directorio del usuario se identifica con ~. Entonces, el usuario puede usar el comando cd ~ para llegar a su directorio desde cualquier directorio. dirOne es un directorio creado por el usuario. El usuario también puede crear otros directorios a este nivel. dirTwo, dirThree y dirFour son subdirectorios de sus directorios anteriores, creados por el usuario.

El usuario puede conocer el tamaño de cualquier otro directorio y sus subdirectorios (subárbol) desde cualquier directorio, omitiendo la ruta absoluta como argumento. Por ejemplo, si se necesita el uso del disco,

/hogar/John/decir/dirTwo

entonces el comando sería:

de -h /hogar/John/decir/dirTwo

o

de -h~/decir/dirTwo

donde ~ representa el directorio del usuario.

Para utilizar una ruta relativa, el usuario ya debe estar en el directorio principal correspondiente. Por ejemplo, si se muestra el mensaje,

John@anfitrión: ~/decir $

lo que significa que el usuario está en el directorio, / home / john / dirOne, entonces el siguiente comando dará el mismo resultado que el comando anterior:

de -hdirTwo

Los caminos seguirían siendo relativos. Para mostrar la misma información para el directorio actual, no use ningún argumento o use el punto.

Este esquema se puede utilizar para obtener el tamaño de un solo directorio, el último en una ruta (precedido por la ruta). Es posible obtener el tamaño de un directorio en medio de una ruta; consulte exclude = PATTERN a continuación.

Gran total

Se puede generar un gran tamaño total de todos los directorios involucrados. Para la situación anterior, el comando sería:

de -h --total

tamaño aparente

El tamaño aparente suele ser menor que el uso del disco. Sin embargo, en algunas situaciones, el tamaño aparente es mayor que el uso del disco; razón - ver más tarde. El comando para obtener los tamaños aparentes para la ruta relativa anterior sería:

de -h - tamaño aparentedirTwo

Profundidad máxima

Con –max-depth = 0, du imprime el tamaño únicamente del directorio de trabajo actual; con du –max-depth = 1, du imprime el tamaño del directorio de trabajo actual y los tamaños de todos sus subdirectorios de primer nivel; con –max-depth = 2, du imprime el tamaño del directorio de trabajo actual y los tamaños de todos sus subdirectorios de primer nivel, y de todos sus subdirectorios de segundo nivel; con –max-depth = 3, du imprime el tamaño del directorio de trabajo actual y todos sus subdirectorios de primer nivel, y todos sus subdirectorios de segundo nivel, y de todos sus subdirectorios de tercer nivel; esto continúa con el valor creciente de la profundidad máxima. Un ejemplo de su uso es:

de -h --máxima profundidad=2

El comando sudo

Uno de los directorios con sus propios subdirectorios en el directorio raíz es var. Si el usuario escribe

de -h /dónde

y presiona Enter, se dará cuenta de que el permiso está denegado para algunos directorios. Es decir, no puede conocer los tamaños de algunos directorios. Se deniega el permiso porque el usuario no es el superusuario. El superusuario tiene el privilegio de ver los tamaños (uso del disco) de esos directorios. Entonces, para que el usuario adquiera ese privilegio, debe usar el comando sudo de la siguiente manera:

sudo de -h /dónde

Si el shell le pide al usuario su contraseña, el usuario debe escribir la contraseña y presionar Enter. Con el comando sudo, el usuario normal (programador) puede ver los tamaños de todos los directorios en el directorio var y directorios similares.

Excluyendo entradas por tamaño

La opción –threshold = SIZE no permitirá listar directorios cuyos tamaños sean menores que SIZE. Por el camino

/hogar/John/decir/dirTwo/dirThree/dirFour

con el mensaje en[correo electrónico protegido]: ~ $, entonces

de -h --umbral= 12K dirOne

donde 12K significa 12 kilobytes, no mostrará la línea para ningún directorio cuyo uso de disco sea inferior a 12K.

–Excluir = PATRÓN

Esta opción y valor pueden omitir líneas de directorio que el usuario no desea en el listado.

Para omitir la línea del último directorio, dirFour de la ruta

/hogar/John/decir/dirTwo/dirThree/dirFour

el comando debe ser:

de -h --excluir= decir/dirTwo/dirThree/dirFour dirOne

El resultado será algo como,

4.0K dirOne/dirTwo/dirThree

8.0K dirOne/dirTwo

12K dirOne

Nota: los tamaños no han incluido el tamaño del directorio de último nivel (dirFour) de la ruta.

Para tener solo los tamaños de los directorios de profundidad superior y sus subárboles, no tenga los directorios de profundidad inferior en la opción. Entonces con el comando,

de -h --excluir= decir/dirTwo/dirTres dirOne

la salida será algo como,

4.0K dirOne/dirTwo

8K dirOne

Nota: los tamaños han excluido los tamaños de los directorios de la palanca inferior del árbol.

Considere nuevamente, el vínculo absoluto,

/hogar/John/decir/dirTwo/dirThree/dirFour

El siguiente comando obtendrá el uso del disco solo del directorio dirTwo, que es un directorio dentro de la ruta. El comando es:

de -h --excluir=/hogar/John/decir/dirTwo/* /hogar/John/decir/dirTwo

El argumento tiene todos los directorios anteriores hasta el en cuestión. El valor de excluir tiene todos los directorios anteriores, que terminan en *, justo después del en cuestión. * significa todos los subdirectorios de ese nivel (y sus subárboles). El resultado será algo como,

5.0K/hogar/John/decir/dirTwo

Conclusión

Tratar de conocer el tamaño de un directorio con el comando ls -s es engañoso. Con él, solo se obtienen los metadatos del directorio. Para conocer el uso de disco de un directorio, se debe usar el comando du. Cuando se usa con la opción -h, los tamaños de los directorios son legibles. El tamaño aparente se puede obtener utilizando la opción de tamaño aparente. Sin ninguna opción ni argumento, el comando du solo muestra los tamaños de todos los subdirectorios del directorio actual, incluido el del directorio actual. El argumento de du es la ruta, que puede comenzar desde la raíz. Las opciones y algunos de sus valores deciden exactamente qué directorios se direccionan. El comando sudo otorga al usuario ordinario privilegios de superusuario de forma predeterminada.