La Façon La Plus Rapide Pour Calculer Répertoire Tailles
quel est le meilleur et plus rapide façon de calculer répertoire tailles? Par exemple, nous allons avoir la structure suivante:
/users
/a
/b
/c
/...
Nous avons besoin de la sortie par le répertoire utilisateur:
a = 1224KB
b = 3533KB
c = 3324KB
...
Nous avons l'intention d'avoir des dizaines, peut-être même des centaines de milliers de répertoires dans /utilisateurs. La commande shell suivante fonctionne:
du -cms /users/a | grep total | awk '{print $1}'
Mais, nous aurons l'appeler N fois. L'ensemble de point, c'est que la sortie; chacun des utilisateurs de la taille des répertoires seront stockées dans notre base de données. Aussi, nous aimerions mettre à jour aussi souvent que possible, mais sans bloquer toutes les ressources sur le serveur. Est-il possible de l'avoir à calculer les utilisateurs de la taille de répertoire à chaque minute? Comment environ toutes les 5 minutes?
Maintenant que j'y pense un peu plus, ne serait-il judicieux d'utiliser node.js? De cette façon, nous pouvons calculer le répertoire de taille, et même de les insérer dans la base de données, tous dans une seule transaction. Nous pourrions le faire en PHP et Python, mais pas sûr que c'est aussi rapide.
Grâce.
- Merci, je suis retourné et a marqué des réponses.
- Aucune des réponses sont marquées comme acceptées.
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas simplement:
(La partie la plus lente est toujours susceptible d'être
du
traversant le système de fichiers pour calculer la taille, tout de même).De quoi avez-vous besoin de cette information? Si c'est seulement pour rappeler aux utilisateurs que leurs répertoires d'origine sont trop grandes, vous devez ajouter quota limites du système de fichiers. Vous pouvez définir le quota de 1000 GO si vous voulez juste les chiffres sans vraiment la limitation de l'utilisation du disque.
Les numéros sont généralement précis à chaque fois que vous accéder à quoi que ce soit sur le disque. Le seul inconvénient, c'est qu'ils vous disent comment grand les fichiers qui sont appartenant par un utilisateur particulier, au lieu de la taille des fichiers en dessous de son répertoire d'accueil de l' sont. Mais peut-être que vous pouvez vivre avec ça.
Je pense que ce que vous cherchez est:
La magie des nombres 7 est prise de loin la sous-chaîne /utilisateurs/, et 300 est juste l'arbitraire d'un grand nombre (awk n'est pas un de mes meilleurs langues =D, mais je devine que la partie ne va pas être écrit dans awk, de toute façon.) C'est plus rapide puisque vous n'impliquent pas de greping pour le total et la boucle est contenue à l'intérieur du. Je parie qu'il peut se faire plus rapidement, mais cela devrait être assez rapide.
pas lent mais va vous montrer les dossiers taille: du-sh /* > total.size.files.txt