Сжатие .dem файлов

Тема в разделе "Запросы", создана пользователем HooLIGUN, 11 янв 2015.

  1. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    126
    Здравствуйте.Подскажите,есть ли плагин для архивирования демок?
    раньше где то видел, но он вроде бы их еще и заливал.
    А мне нужно просто их повестить в архив (ну и удалить оригинал)
     
  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.005
    Симпатии:
    2.994
  3. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    126
  4. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.005
    Симпатии:
    2.994
  5. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    126
    Оно его еще и отправляет.
    А мне нужно чтобы просто поместить демо в архив, и удалить сам файл .dem, без отправки. можно как то подправить этот плагин?
     
  6. Хитрый_Ёжик

    Хитрый_Ёжик

    Сообщения:
    281
    Симпатии:
    94
    HooLIGUN, у тебя игровой сервер на хостинге или на своей машине/VPS?

    Просто если второе, то было бы лучше воспользоваться простеньким скриптом на bash.
     
  7. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    126
    VDS
    Подскажи скрипт?
     
  8. Хитрый_Ёжик

    Хитрый_Ёжик

    Сообщения:
    281
    Симпатии:
    94
    Часть моего убер древнего скрипта:
    Код:
    #!/bin/bash
    
    files=$(find . -name *.dem -type f -amin +4)
    
    for file in $files
    do
    	bzip2 $file;
    	mv $(echo $file.bz2) $(echo ./upload/$file.bz2);
    done;
    По хорошему всё это надо делать одним find, но на протяжении 4-х лет мне лень его править. К тому же всё работает, а "Работает - не трогай".

    -amin +4 - означает, что работать только с файлами старше 4-х минут.

    ВАЖНО!
    У меня демки после окончания записи выгружаются в архив, а там уже и обрабатываются. Тебе нужно как-нибудь добавить пропуск текущей демки, думаю head -1 после find'а будет в самый раз, ну или просто тупо пропускать первый элемент массива.

    P.S. - Завтра экзамен, сейчас не до баша.
     
    Последнее редактирование: 11 янв 2015
    Danyas и HooLIGUN нравится это.
  9. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    126
    Спасибо за скрип.
    Можешь подсказать поточнее,куда это вставить?
    Вроде то что нужно, но не пойму что с этим делать
     
  10. Tallanvor

    Tallanvor Красноглазый

    Сообщения:
    1.107
    Симпатии:
    317
    HooLIGUN,
    можно ещё и так это сделать:
    Код:
    #!/bin/bash
    cd /home/servers/css       #путь к папке, где демки лежат ;)
    find . -name \*.dem | while read x; do          # находим все демки в указанной папке
        if [ ( lsof ${x}) == null ] ;  then         # проверка, пишется ли ещё демка, или уже можно трогать
                    bzip2 ${x}      # архивируем
                    rm -f ${x}      # удаляем
            fi
    done
    
     
    HooLIGUN нравится это.
  11. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    126
    Выдает такую ошибку:
    Код:
     ./demos.sh
    ./demos.sh: line 4: syntax error near unexpected token `lsof'
    ./demos.sh: line 4: `    if [ ( lsof ${x}) == null ] ;  then         # п©я─п╬п╡п╣я─п╨п╟, п©п╦я┬п╣я┌я│я▐ п╩п╦ п╣я┴я▒ пЄп╣п╪п╨п╟, п╦п╩п╦ я┐пІп╣ п╪п╬пІпҐп╬ я┌я─п╬пЁп╟я┌я▄'
    
    Удалил комментарии

    Код:
    ./demos.sh
    ./demos.sh: line 4: syntax error near unexpected token `lsof'
    ./demos.sh: line 4: `    if [ ( lsof ${x}) == null ] ;  then         '
    
     
  12. Хитрый_Ёжик

    Хитрый_Ёжик

    Сообщения:
    281
    Симпатии:
    94
    Tallanvor, bzip2 без ключа -k удаляет исходный файл после архивации.

    UPD: Походу демка пишется в файл не постоянно, так что можно заархивировать неполную демку.

    Добавлено через 6 минут
    Код:
    #!/bin/bash
    
    files=( $(find . -name *.dem -type f | sort) )
    
    unset files[${#files[@]}-1];
    
    for file in ${files[@]}
    do
    	bzip2 $file;
    	mv $(echo $file.bz2) $(echo ./upload/$file.bz2);
    done;
     
    Последнее редактирование: 11 янв 2015
    HooLIGUN нравится это.
  13. Tallanvor

    Tallanvor Красноглазый

    Сообщения:
    1.107
    Симпатии:
    317
    Хитрый_Ёжик, спасибо за замечания, писал "на коленке", как помнил...

    Добавлено через 1 минуту
    Пардон, не проверил полностью работу, сейчас поковыряю ещё...
     
    Последнее редактирование: 11 янв 2015
  14. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.729
    Симпатии:
    461
    Такой фигни вы намудрили конечно...

    Архивация всех демок, которые "не трогали" больше 3х минут
     
    HooLIGUN нравится это.
  15. Хитрый_Ёжик

    Хитрый_Ёжик

    Сообщения:
    281
    Симпатии:
    94
    Danyas, если играет 1 человек, то вполне может дать сбой.
     
  16. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.729
    Симпатии:
    461
    Я для себя переписал плагин, который пишет демки только при наличии >=4 человек.
    Так что это исключено.
    Если кому нужно - выложу

    Добавлено через 1 минуту
    А хотя что я, жлоб что ли...
    PHP:
    new bool:g_bIsRecording false;
    #define DEMOPATH "/var/www/danyas/v34_demo/"
    #define DEMOPREFIX "autodemo"
    public Plugin:myinfo = {name "SourceTV Auto Demo Recorder",author "Danyas [main code by Stevo.TVR]"}
    public 
    OnPluginStart(){StopRecord();CheckStatus();}
    public 
    OnMapEnd(){StopRecord();}
    public 
    OnClientPutInServer(client){CheckStatus();}
    public 
    OnClientDisconnect_Post(client){CheckStatus();}
    public 
    CheckStatus(){if(GetClientCount(true) >= 4){StartRecord();}else if(g_bIsRecording){StopRecord();}}
    public 
    StartRecord()
    {
        if(!
    g_bIsRecording)
        {
            
    decl String:sTime[16], String:sMap[32];
            
    FormatTime(sTimesizeof(sTime), "%Y%m%d-%H%M%S"GetTime());GetCurrentMap(sMapsizeof(sMap));
            
    ServerCommand("tv_record %s%s-%s-%s"DEMOPATHDEMOPREFIXsTimesMap); //ty R1KO for help define replace
            
    LogMessage("Recording to %s%s-%s-%s.dem"DEMOPATHDEMOPREFIXsTimesMap); //ty R1KO for help define replace
            
    g_bIsRecording true;
        }
    }
    public 
    StopRecord(){ServerCommand("tv_stoprecord");g_bIsRecording false;}

    #define DEMOPATH "/var/www/danyas/v34_demo/" - путь к демо файлам
    #define DEMOPREFIX "autodemo" - префикс
     
    Последнее редактирование: 11 янв 2015
    Konstantin нравится это.
  17. Хитрый_Ёжик

    Хитрый_Ёжик

    Сообщения:
    281
    Симпатии:
    94
    Это уже от специфики сервера зависит. Просто у меня пишутся при 1+ вот и написал.
     
  18. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.729
    Симпатии:
    461
    Специфики?
    Я ж вроде для этого плагин выложил...
     
  19. Хитрый_Ёжик

    Хитрый_Ёжик

    Сообщения:
    281
    Симпатии:
    94
    Я о том, с какого количества игроков начинать запись демки.

    Например на WCS сервере можно встретить игроков, которые со своими друзьями могут качаться дуг на друге ночью на пустом сервере (запись при 2+).
     
  20. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    126
    Оффтоп
    Вот бы плагин,на подобие tAutoDemoUpload , только чтобы он сжимал демку без отправки на фтп :)