Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/06/2015, à 13:56

Dane69

Recherche d'une commande complexe avec "find" avec des paramètres

Bonjours à tous,

Voici une question assez complexe car il faut une combinaison de commande en utilisant find et trier les résultats etc... mais si quelqu'un pense pouvoir y arriver, n'hésitez pas.

Voilà, sur des serveurs avec pleins de comptes utilisateurs (des centaines), j'aimerai trouver une commande find avec paramètre qui affiche pour le répertoire "/home" uniquement,  les 10 utilisateurs (donc leur login) qui ont stocké le + de données perso classé de celui qui a stocké le + a celui qui a stocké le moins parmi le top10 et en précisant la taille stocké dans le résultat de la recherche.

Je précise au cas ou ça changerai quelque chose, les logins sont stocké par directement a la racine du home mais dans un sous-répertoire correspondant a la 1ere lettre de leur login.

exemple l'utilisateur "jean.ferrat" est stocké dans : /home/j/jean.ferrat
l'utilisateur "zinedine.zidane" est stocké dans /home/z/zinedine.zidane

A noté qu'il serai mieux de ce baser sur tous les fichiers du home appartenant a l'utilisateur en question (pour le cacul) plutôt que calculer uniquement la somme de son dossier perso) car parfois un utilisateur peux stocker des données dans un dossier partager dans /home/workgroup/partage par exemple donc il serai préférable de prendre aussi en compte les fichiers stocké des utilisateurs en dehors de leur $home perso mais si ça complexifie trop vous pouvez faire sans.

exemple de résultat a obtenir: (pas forcément avec une présentation identique)

1_paul.dupont_53 Go
2_pierre.jacque_49 Go
3_franck.jojo_31 Go
4_stan.irk_21 Go
5_eloise.blablba_16 Go
6.....
7.....
8...
9....
10....


Si vous avez une idée n'hésitez pas mais si c'est trop compliqué c'est pas grave. smile

Dernière modification par Dane69 (Le 18/06/2015, à 14:00)

Hors ligne

#2 Le 18/06/2015, à 14:19

bruno

Re : Recherche d'une commande complexe avec "find" avec des paramètres

Bonjour,

Ce n'est pas de la commande find dont tu as besoin mais plutôt de la commande du. Dans ton cas, pour connaître la taille des dossiers des utilisateurs, un truc dans le style :
:

sudo du -h --max-depth=1 /home/*/ | sort -hr

Dernière modification par bruno (Le 18/06/2015, à 14:21)

Hors ligne

#3 Le 18/06/2015, à 14:21

Dane69

Re : Recherche d'une commande complexe avec "find" avec des paramètres

Merci pour ta réponse bruno mais la commande que tu donnes est très loin du résultat a obtenir et ne calcul pas du tout pour chaque utilisateur.

Je pense qu'il faut utiliser la commande find mais avec l'utilisation aussi de du -h (combinaison de plusieurs commandes) car il doit trouver a quel utilisateur appartiens chaque données et faire des calculs puis un tri.

La commande que tu donnes ne fait qu'afficher la taille de chaque dossier et sous-dossier dans le home même si il y a de l'idée, ça permet de voir par exemple les 10 dossiers les plus gros dans le home.

Dernière modification par Dane69 (Le 18/06/2015, à 14:24)

Hors ligne

#4 Le 18/06/2015, à 14:23

bruno

Re : Recherche d'une commande complexe avec "find" avec des paramètres

J'ai édité ma réponse pour ajouter l'option de tri. Ensuite à toi d'adapter mais du calcule bien la taille des dossier utilisateurs.

Hors ligne

#5 Le 18/06/2015, à 14:28

Dane69

Re : Recherche d'une commande complexe avec "find" avec des paramètres

bruno a écrit :

J'ai édité ma réponse pour ajouter l'option de tri. Ensuite à toi d'adapter mais du calcule bien la taille des dossier utilisateurs.

C'est plus compliqué que tu le penses, je sais bien que du calcul la taille de chaque dossier mais ce que donne est loin du résultat que je souhaites.

Comme je l'ai dis, les utilisateurs peuvent stocker ailleurs que dans leur perso (par exemple dans /home/workgroups/partage) et ça doit être comptabilisé pour leur compte aussi (doit vérifier donc le propriétaire du fichier/dossier).

La commande que tu donnes ne prend pas en compte ça et en plus affiche pour tous les dossiers (y compris les sous-dossiers que chaque utilisateur) mais si c'est trop complexe a prendre en compte c'est pas grave, ta commande permet quand même d'avoir une idée des gros dossiers c'est déjà pas mal.

Dernière modification par Dane69 (Le 18/06/2015, à 14:28)

Hors ligne

#6 Le 18/06/2015, à 15:11

bruno

Re : Recherche d'une commande complexe avec "find" avec des paramètres

Je t'ai dit qu'il fallait adapter à ton cas. Si tes utilisateurs ont des dossiers /home/t/toto peut-être faut-il utiliser :

du -f /home/?/

Maintenant si un utilisateur toto a des fichiers lui appartenant un peu partout dans /home (c'est le bordel non ?), tu peux effectivement utiliser find pour générer une liste de tous les fichiers lui appartenant :

sudo find /home -type f  -user toto -name "*"

Et utiliser ensuite du sur cette liste (avec --file0-from=fichier, cf. man du)

Hors ligne