[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
A voir également:

6 réponses

dubcek Messages postés 19032 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
Hi
Possibilié: en créant un file-system virtuel dans un fichier de 100 Mb : http://souptonuts.sourceforge.net/quota_tutorial.html
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
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
dubcek Messages postés 19032 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
dubcek Messages postés 19032 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
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
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