IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

Récupérer la taille des répertoires


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut Récupérer la taille des répertoires
    Bonjour,

    J'ai besoin de récupérer la taille de plusieurs répertoires sur différents serveurs windows 2003.

    Je débute sous Perl.
    J'ai dans un premier temps fait un script qui exécutait en local le binaire du.exe :
    my $ST = `psexec \\\\172.x.x.x\\ du -sm D:\\Partage`;

    Sur des répertoires de quelques giga c'est rapide, mais sur des répertoires de plusieurs centaines de giga c'est interminable.

    Je cherche donc une autre solution plus rapide, peut être existe t'il un module?

    En vous remerciant par avance.

  2. #2
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    Bonjour, j'ai avancé mais maintenant je suis bloqué sur la récursivité:
    #!/usr/bin/perl

    use warnings;

    ##Définitions des variables ""
    my $dir = "C:\\Outils";
    my $dossier = "";
    my $fichier = "";
    my $file = "";
    my $compteur1 = 0;
    my $compteur2 = 0;
    my $total = 0;

    foreach $file (grep { -f } glob "$dir/*")
    {
    print ("$file a une taille de ", -s $file, " octets \n");
    $compteur1 = $compteur1 + -s $file;
    }

    foreach $dossier (grep { -d } glob "$dir/*")
    {
    foreach $fichier (glob "$dossier/*")
    {
    print ("$fichier a une taille de ", -s $fichier, " octets \n");
    $compteur2 = $compteur2 + -s $fichier;
    }
    }

    $total = (($compteur1 + $compteur2)/1024)/1024;
    print ("$dir fait $total Mo \n");
    C'est une partie de script que j'ai récupéré et modifier.
    Donc là je cherche comment rendre la fonction glob récursive.

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Bon, Une façon simple de calculer la taille d'un répertoire en Perl est d'utiliser le module suivant : Filesys::DiskUsage

    Installe le et pour l'utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/usr/bin/perl
    use strict;
    use warnings;
    use Carp;
     
    use Filesys::DiskUsage qw/du/;
     
    my $Size = du("C:/");
    voilà

  4. #4
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    Super merci.

    Je test dès que j'ai compris comment installer le module... (si si j'ai lu la faq).

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    J'ai trouvé la version zip ici:
    http://ppm.activestate.com/PPMPackag...-only/Windows/

    Avec le .ppd qui va bien du coup ça va beaucoup mieux pour l'installation, je pourrai tester demain.

    Bonne soirée

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Pour installer, t'as juste à faire ceci sous dos
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ppm install Filesys::DiskUsage

  7. #7
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    J'ai essayé rapidement sur un dossier en local et ça fonctionne.

    Reste à tester sur le dossier d'un serveur distant et faire le script complet.

    Je poste quand c'est fini ou si j'ai un problème.

    Encore merci.

    EDIT: j'avais essayé cette commande, ça ne passait pas le proxy avec login et mdp (malgré avoir spécifier tout ce qui fallait en suivant la FAQ)

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/05/2015, 20h06
  2. Réponses: 7
    Dernier message: 26/05/2007, 12h43
  3. Taille des répertoires et sous répertoires
    Par Katyucha dans le forum Windows XP
    Réponses: 4
    Dernier message: 24/08/2006, 16h28
  4. Récupérer la liste des répertoires d'un répertoire
    Par oursblanc dans le forum Langage
    Réponses: 3
    Dernier message: 19/10/2005, 14h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo