Uso total del disco para un usuario en particular

11

Me gustaría ver el uso total del disco para mí en un sistema de archivos en particular. Ejecuté el comando

du -h ~my_user_name

Sin embargo, esto enumera todos los directorios propiedad de my_user_name. Me gustaría obtener la suma total de toda esta información. ¿Cuál es la opción adecuada para aprobar? Lo intenté

du -h -c ~my_user_name

Pero eso no funcionó.

Alex
fuente

Respuestas:

11

Pasar -sa durestringirá la salida solo a los elementos especificados en la línea de comando.

du -sh ~
Ignacio Vazquez-Abrams
fuente
9

Du solo le mostrará los totales por carpeta, no por usuario.

Eso podría funcionar si desea el tamaño total de, digamos, /home/example_user/y si solo ese example_user tiene archivos en esa carpeta. Si otros usuarios tienen archivos en ellos, esto no producirá el tamaño de todos los archivos que posee, sino el tamaño total de todos los archivos en esa carpeta.

Para obtener la información por usuario, ya sea:

  1. Si tiene habilitada la cuota , use esos comandos.
  2. Use find para recorrer todos los directorios en los que desea contar sus archivos. Use el uid para seleccionar solo sus archivos y mantener una matriz asociativa en awk para contar los totales.

find /path/to/search/ -user username_whos_files_to_count -type f -printf "%s\n" | awk '{t+=$1}END{print t}'

Tenga en cuenta que esto utiliza una extensión específica de búsqueda de GNU.

  • El primer comando busca más allá de todos los archivos y directorios en /path/to/search/.
  • -type fse asegura de que solo selecciona archivos, de lo contrario también cuenta el tamaño de los directorios. (Intente crear una carpeta vacía. Probablemente usará 4k de espacio en disco).
  • -user username_whos_files_to_count solo selecciona los resultados de un usuario
  • -printf "%s\n" imprimirá el tamaño.

Si solo ejecuta la primera parte de esto, obtendrá una lista de números. Esos son los tamaños de archivo. (Todo lo demás se elimina, solo se imprime el tamaño gracias al comando de impresión% s).

Luego podemos agregar todos esos números para obtener un resumen. En el ejemplo, esto se hace con awk.

Hennes
fuente
+1 buen punto, gracias! La respuesta a continuación fue exactamente lo que quería. la distinción usuario / carpeta no importa mucho en mi caso
Alex
Agradable. du -schEs un comando fácil de usar a menudo. Rastrear quién poseía qué cuando las cosas se mezclaron es mucho más difícil, aunque se puede hacer de una sola vez. Lo usé una vez, pero tuve problemas para reconstruirlo hoy.
Hennes
Me ayudó mucho, explicación perfecta
Babin Lonston
2

Para encontrar todo el uso de un usuario específico, un buen comando es:

find -user $USER -type f -exec du -chs {} +

Puede modificar aún más según las necesidades específicas, por ejemplo, a menudo quiero resumir el uso por carpeta, y lo siguiente funciona bien:

find . -maxdepth 1 -user $USER -type d ! -path . -exec du -chs {} +

Esto solo encuentra directorios en un nivel, limita por usuario, excluye el directorio principal e imprime cada directorio y un resumen al final.

asherkhb
fuente