Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Quota на директорию, установить фиксированный размер папки 
:(
    Опции темы
Zolex
Дата 13.11.2006, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 24.10.2006

Репутация: нет
Всего: нет



Вопрос академический... То есть как бы это сделать в теории.

Создаем некую директорию средстваи Perl 5 под Linux RedHat 7.2 с ENSIM на борту.
Что-то вроде :


Код

$dirname = "mydir";
system("mkdir $dirname");


В эту директорию планируется закачивать файлы посредством CGI. Вот как бы можно было-бы установить фиксированный размер директории, чтобы при привышении квоты, файлы не закачивались. При этом хорошо бы еще понимать насколько она заполнена...


PM MAIL   Вверх
GoodBoy
Дата 13.11.2006, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



Код
#!/usr/bin/perl

my $DIR = './mydir';
my $cnt = &getDirSize($DIR);
print "$cnt\n\n";

sub getDirSize {
    my $dir = shift;
    my $cnt = 0;
    if (opendir(DIR, $dir)) {
        my @files = ();
        while (my $file = readdir DIR) {
            next if $file =~ /^\.{1,2}$/;
            push(@files, $file);
        }
        closedir(DIR);
        foreach my $file (@files) {
            $cnt += &getDirSize("$dir/$file") if -d "$dir/$file";
            $cnt += (stat("$dir/$file"))[7];
        }
    } else {
        die "Cannot open dir: $!"
    }
    return $cnt;
}


напечатает тебе полный размер каталога со всеми вложенными подкаталогами (с учётом размеров самих каталогов, а не только лажащих в них файлов).

если не нужно учитывать размер самих каталогов (нужен только размер файлов), то вот это:
Код
            $cnt += &getDirSize("$dir/$file") if -d "$dir/$file";
            $cnt += (stat("$dir/$file"))[7];

замени на это:
Код
            if (-d "$dir/$file") {
                $cnt += &getDirSize("$dir/$file");
            } else {
                $cnt += (stat("$dir/$file"))[7];
            }



--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Zolex
Дата 13.11.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 24.10.2006

Репутация: нет
Всего: нет



Спасибо.

Я вообщем-то так и предполагал, что придется делать софтовыми способами...

Другое дело, что была мысль установки квоты методами файловой системы... Но в диалоге с опытными людьми, идея потерпела фиаско..

Спасибо еще раз..
PM MAIL   Вверх
GoodBoy
Дата 13.11.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



можешь сделать системный вызов du -h mydir и пропарсить полученный ответ.. .:-)


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.