Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

История благодарностей участнику butaford ::: Спасибо сказали: 6
Дата поста: В теме: За сообщение: Спасибо сказали:
27.3.2016, 17:49 Автоархивация и автоудаление HLTV на VDS linux
Цитата
P.S. И еще небольшой вопрос-придирка. Возможно ли в скрипте для архивации менять степень сжатия? Хочется сделать максимальную степень сжатия. На данный момент у меня примерно из 45 Мб получается 15 Мб. Это около 70% сжатия. Реально ли сжать еще сильнее? И если реально, то как?

добавить параметр от -1 до -9 в строке
Код
zip -j "$i".zip -m "$i".dem; done
,
например
Цитата
zip -j -9 "$i".zip -m "$i".dem; done]
, где -1 быстрое сжатие, -9 максимальное сжатие
При этом ощутимой разницы в размере при сжатии демо файлов нет.
leshiy
27.3.2016, 16:22 Автоархивация и автоудаление HLTV на VDS linux
Набросал скрипт, который:
1. Архивирует dem файлы из папки с сервером, не трогая в данный момент записываемую демку
2. Разбирает их по дате
Скрин


3 Бывает что демо запись начинается "вчера", а архивируется "сегодня" и демка со "вчерашней" датой попадает во "сегодняшнюю" папку, скрипт находит и перемещает данную демку:
Скрин

Скрипт
Код
#!/bin/sh
echo "======================================================"
echo "========== НАЧАЛО АРХИВИРОВАНИЯ ДЕМО ФАЙЛОВ =========="

#текущая дата и время
dt="`date '+%d.%m.%Y_(%H:%M:%S)'`"
#папка с именем текущей даты
DATEDIR="`date '+%d-%m-%Y'`"
#папка с именем текущей даты минус 1 день, то есть "вчерашняя дата"
DATEDIRy="`date '+%d-%m-%Y' -d "1 day ago"`"
#файл(ы) с именем текущей даты минус 1 день, то есть "вчерашняя дата"
DATEFILEy="`date '+%d%m%Y' -d "1 day ago"`"
#путь до сервера где лежит демо без / в конце
DDIR="/path/to/dem/file"
#путь куда складывать заархивировнное демо без / в конце
ZDIR="/path/to/zipdem/file"
#подсчет колличества *.dem файлов в папке с сервером, если больше 1, то выполняется архивирование и перемещение демки
DEMfc=`ls -f $DDIR/*.dem | wc -l`
#подсчет колличества файлов попавших по ошибке в папку со "вчерашней датой", если больше или равно 1, то перемещение из ошибочной директории
ZDEMfc=`ls -f $ZDIR/$DATEDIR/auto-$DATEFILEy* | wc -l`

#Проверяем существование папки c текущей датой, если нет создаём
echo ""
echo "$dt - Проверяем существование папки c текущей датой, если нет создаём"
if ! [ -d $ZDIR/$DATEDIR ]; then
        echo "  |"
        echo "  -- $dt - Папки нет, создаём"
        mkdir -p $ZDIR/$DATEDIR
else
        echo "  |"
        echo "  --$dt - Папка существует, продолжаем выполнение скрипта"
fi

#если количество файлов больше чем 1, то архивируем и перемещаем
if [ $DEMfc -gt 1 ]; then
        echo ""
        echo "$dt - Файлов $filecount, архивируем, записываемое демо не трогаем"
        cd $DDIR
        for i in $( ls -t *.dem |sed '1,1d'| cut -d . -f1); do
                zip -j "$i".zip -m "$i".dem; done
        #Переносим заархивированные файлы
        mv *.zip $ZDIR/$DATEDIR
else
        echo ""
        echo "$dt - Файлов для сжатия нет"
fi

#Проверим наличие "вчерашних" файлов попавших в папку с текущей датой
echo ""
echo "$dt - Проверим наличие "вчерашних" файлов попавших в папку с текущей датой"
#if [ $(ls -1A $ZDIR/$DATEDIR/auto-$DATEFILEy* 2>/dev/null | wc -l) -gt 0 ]; then # или команда ниже, прицип один и тот же, только красивее)
if [ $ZDEMfc -gt 0 ]; then
        echo "  |"
        echo "  -- $dt - есть вчерашни(й.е) файл(ы) для перемещения из папки $DATEDIRy:"
        echo "`find $ZDIR/$DATEDIR/auto-$DATEFILEy* -maxdepth 1 -type f -exec basename {} ; 2> /dev/null`"
#       echo "`ls -1 $ZDIR/$DATEDIR/auto-$DATEFILEy*`"
        mv $ZDIR/$DATEDIR/auto-$DATEFILEy* $ZDIR/$DATEDIRy/
else
        echo "  |"
        echo "  -- $dt - "вчерашних" файлов для перемещения нет"
fi

#Удаляем демо старше 30 дней
echo "$dt - Удаляем демо старше 30 дней"
find $ZDIR -type d -mtime +30 -print0 | xargs -0 rm -rf

echo "========== КОНЕЦ АРХИВИРОВАНИЯ ДЕМО ФАЙЛОВ ==========="
echo "======================================================"


Ах да чуть не забыл можно поставить в cron c интервалом в несколько минут:
Код
*/1 * * * * cd /home/pnp/public_html/scripts/demo && sh start.sh >/dev/null  2>&1

В данном примере раз в минуту
cstriker, suttles, wopox3, XyLiGaN