[Linux]Gestion de quota par répertoire

Manov Messages postés 3 Statut Membre -  
 webmister -
Bonjour, je souhaiterai en quelque sorte fixer une taille limite à un répertoire. C'est à dire le limité à 100mo par exemple.
Je sais qu'il est possible de faire ceci par utilisateur ou bien par groupe mais je ne suis pas sur que ca soit possible pour un répertoire bien précis.

Merci d'avance pour vos réponses et sur la façon de procédé si vous avez la moindre idée ;)

Manov

6 réponses

  1. webmister
     
    Salut
    maintenant nous sommes deux à chercher sauf que moi j'ai peux etre une piste jai entendu dire sur un forum que l'on pouvez le faire en .htaccess
    mais j'en sais pas plus
    si vous avez d'autre piste je suis preneur
    Cordialement
    0
  2. webmister
     
    merci pour cette réponse rapide
    mais le probleme c'est que je suis en mutualisé et je ne peux pas utiliser de commande serveur enfin je pense...
    jai déjà reussis cette nuit à faire une fonction pour calculer la taille d'un repertoire et en fixer une limite mais je ne vois pas comment interdire l'update si cette limiter est atteinte

    je ne sais pas si j'ai le droit de metre cette fonction ici donc si vous vouilez la voir je peux vous l'envoyer par email

    en tous cas merci de votre aide
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    Effectivement, une fois les 100 Mb atteints, que faut-il faire ?
    Ejecter les utilisateurs ?
    Tuer les tâches qui écrivent dans le répértoire ?
    Changer les droits sur le répertoire en read-only ?
    Je ne vois pas tellement d'autres méthodes.
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. webmister
     
    le top sa sera un message d'erreur qui s'affiche en disant que le fichier n'as pas pu etre transferer car le quota à été atteint

    veut tu que je te montre mon script qui calcule et qui determine le quota ?
    0
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    Affiche le ici.
    Mais après le message d'erreur, le fichier va continuer à croitre si la tâche n'est pas tuée ...
    0
    1. webmister
       
      Donc enfaite il faudrais tuer les tâches qui écrivent dans le répértoire une fois que le quota est plein


      voici le code :


      function DirSize($path, $result= array()){
      $sum= 0;
      if(!is_dir($path) || !is_readable($path)) {
      return 0;
      } else {
      $fd = dir($path);
      while($file = $fd->read()) {
      if(($file != ".") && ($file != "..")) {
      if(@is_dir("$path/$file/")) {
      $result= DirSize("$path/$file", $result);
      } else {
      $sum+= filesize("$path/$file");
      }
      }
      }
      $fd->close();
      $result["$path/$file"]= $sum;
      return $result;
      }
      }
      //chez free le parametre precision de round n'est pas supporté
      function free_round($val2round, $precision) {
      // 3.14.15.926536, 2 314/100= 3.14
      // 196204, -3 196/0.001= 196000
      return(round($val2round*pow(10, $precision))/pow(10, $precision));
      }
      $quota_max= 100*1000*1000; // 100Mo
      // pour scanner depuis le dossier en cours
      $quota_root= getcwd();
      // pour scanner depuis la racine
      //$quota_root= $_SERVER['DOCUMENT_ROOT'];
      $quota_used= DirSize($quota_root);
      $quota_unite= 'Mo';
      $quota_Tunite= array('Octets'=>1, 'Ko'=>1000, 'Mo'=>1000000); // calcul en Mo.
      echo 'le dossier '.basename($quota_root).
      ' occupe '.free_round(array_sum($quota_used)*100/$quota_max, 2).' %
      des '.$quota_max/$quota_Tunite[$quota_unite].' '.$quota_unite.' alloués<br />';
      echo 'les '.free_round(array_sum($quota_used)/$quota_Tunite[$quota_unite], 2).' '.$quota_unite.' utilisés sont répartis comme tel :<br />';
      foreach($quota_used as $key=>$val) {
      echo free_round($val/$quota_Tunite[$quota_unite], 2).' '.$quota_unite.' dans '.str_replace($quota_root, '', $key).'<br />';
      }


      Encore merci pour ton aide
      0