Здравствуйте, гость Вход | Регистрация
Наши новости:
|
| Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
|---|---|---|---|---|---|
| 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 | ||