[Linux]Gestion de quota par répertoire
Manov
Messages postés
3
Statut
Membre
-
webmister -
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
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:
- [Linux]Gestion de quota par répertoire
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Linux reader - Télécharger - Stockage
- Logiciel gestion photo gratuit - Guide
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Backtrack linux - Télécharger - Sécurité
6 réponses
Hi
Possibilié: en créant un file-system virtuel dans un fichier de 100 Mb : http://souptonuts.sourceforge.net/quota_tutorial.html
Possibilié: en créant un file-system virtuel dans un fichier de 100 Mb : http://souptonuts.sourceforge.net/quota_tutorial.html
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
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
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
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
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ?
veut tu que je te montre mon script qui calcule et qui determine le quota ?
Affiche le ici.
Mais après le message d'erreur, le fichier va continuer à croitre si la tâche n'est pas tuée ...
Mais après le message d'erreur, le fichier va continuer à croitre si la tâche n'est pas tuée ...
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
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