Utilisation totale du disque pour un utilisateur particulier

11

Je voudrais voir l'utilisation totale du disque pour moi sur un système de fichiers particulier. J'ai exécuté la commande

du -h ~my_user_name

Cependant, cela répertorie tous les répertoires appartenant à my_user_name. Je voudrais obtenir la somme totale de toutes ces informations. Quelle est l'option appropriée pour réussir? j'ai essayé

du -h -c ~my_user_name

Mais ça n'a pas marché.

Alex
la source

Réponses:

11

Le passage -sà dulimitera la sortie aux seuls éléments spécifiés sur la ligne de commande.

du -sh ~
Ignacio Vazquez-Abrams
la source
9

Du ne vous montrera que les totaux par dossier, pas par utilisateur.

Cela pourrait fonctionner si vous voulez la taille totale de, disons, /home/example_user/et si seulement cet exemple_utilisateur a des fichiers dans ce dossier. Si d'autres utilisateurs ont des fichiers, cela ne donnera pas la taille de tous les fichiers que vous possédez, mais la taille totale de tous les fichiers de ce dossier.

Pour obtenir les informations par utilisateur, soit:

  1. Si le quota est activé, utilisez ces commandes.
  2. Utilisez find pour parcourir tous les répertoires dans lesquels vous souhaitez compter vos fichiers. Utilisez l'uid pour sélectionner uniquement vos fichiers et conserver un tableau associatif dans awk pour compter les totaux.

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

Remarque, cela utilise une extension spécifique à GNU find.

  • La première commande recherche parmi tous les fichiers et répertoires de /path/to/search/.
  • -type fs'assure que vous ne sélectionnez que les fichiers, sinon vous comptez également la taille des répertoires. (Essayez de créer un dossier vide. Il utilisera probablement un espace disque de 4k).
  • -user username_whos_files_to_count sélectionne uniquement les résultats d'un seul utilisateur
  • -printf "%s\n" imprimera la taille.

Si vous exécutez juste la première partie de ceci, vous obtiendrez une liste de nombres. Ce sont les tailles de fichiers. (Tout le reste est supprimé, seule la taille est imprimée grâce à la commande d'impression% s.)

Nous pouvons ensuite ajouter tous ces chiffres pour obtenir un résumé. Dans l'exemple, cela se fait avec awk.

Hennes
la source
+1 bon point, merci! la réponse ci-dessous était exactement ce que je voulais. la distinction utilisateur / dossier n'a pas beaucoup d'importance dans mon cas
Alex
Agréable. du -schest une commande facile souvent utilisée. Retrouver qui possédait quoi quand les choses ont été mélangées est beaucoup plus difficile, mais cela peut être fait en une seule ligne. Je l'ai utilisé une fois, mais j'ai eu du mal à le reconstruire aujourd'hui.
Hennes
M'a beaucoup aidé, Explication parfaite
Babin Lonston
2

Pour trouver toute l'utilisation par un utilisateur spécifique, une bonne commande est:

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

Vous pouvez modifier davantage en fonction des besoins spécifiques, par exemple, je veux souvent résumer l'utilisation par dossier, et les éléments suivants fonctionnent bien:

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

Cela ne trouve que les répertoires sur un niveau, limite par utilisateur, exclut le répertoire parent et imprime chaque répertoire et un résumé à la fin.

asherkhb
la source