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

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

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

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

Автоархивация и автоудаление HLTV на VDS linux

, Без заливки на сайт
Статус пользователя leshiy
сообщение 3.1.2016, 19:40
Сообщение #1


Стаж: 12 лет

Сообщений: 82
Благодарностей: 19
Полезность: 156

Люди добрые, поделитесь скриптом/скриптами для автоматической архивации HLTV-демок и автоматического их удаления по каким-нибудь критериям (количество демок или степень заполненности свободного места на диске или раз в n-ое кол-во времени или еще как-то). Имеется VDS-хостинг на linux. HLTV завел по этой статье - все получилось. Возникает проблема со свободным местом. Пошарил по другим темам: практически везде устроено все то, что мне надо, но в связке с заливанием заархивированных демок на сайт (форум). Мне закачка на сайт не нужна. У меня сайта/форума нет, так что просто необходима архивация демок для экономии места и желательно их автоматическое удаление.
Если уже есть что-то готовое, то ткните носом в нужную тему.

Попытался сделать, как написано в этой теме. Сделал скрипт zip.sh и кинул его в папку, куда записываются HLTV-демки.
zip.sh
#!/bin/sh
DIR="папка, куда перемещаются заархивированные демки"
for i in $( ls -t *.dem |sed '1,1d'| cut -d . -f1); do zip "$i".zip -m "$i".dem; done
mv *.zip $DIR

Поставил задание в крон, получилось.

1 кусок желаемого есть, нужен второй кусок - скрипт для удаления демок. В идеале желательно удаление демок, чей возраст превышает 7 дней.
Помогите со скриптом. Или возможно у кого-то есть скрипт 2 в 1, так сказать. Который сможет архивировать демки и сразу удалять их исходные файлы, а потом (через заданное время) удалять заархивированные демки тоже.

P.S. И еще небольшой вопрос-придирка. Возможно ли в скрипте для архивации менять степень сжатия? Хочется сделать максимальную степень сжатия. На данный момент у меня примерно из 45 Мб получается 15 Мб. Это около 70% сжатия. Реально ли сжать еще сильнее? И если реально, то как?

Отредактировал: leshiy, - 3.1.2016, 22:30
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя butaford
сообщение 27.3.2016, 16:22
Сообщение #2
Стаж: 10 лет
Город: Воронеж

Сообщений: 5
Благодарностей: 6
Полезность: 0

Набросал скрипт, который:
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

В данном примере раз в минуту
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 4 раз
   + Цитировать сообщение
Статус пользователя butaford
сообщение 27.3.2016, 17:49
Сообщение #3
Стаж: 10 лет
Город: Воронеж

Сообщений: 5
Благодарностей: 6
Полезность: 0

Цитата
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 максимальное сжатие
При этом ощутимой разницы в размере при сжатии демо файлов нет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Cracky
сообщение 27.3.2016, 18:28
Сообщение #4


Стаж: 15 лет

Сообщений: 768
Благодарностей: 197
Полезность: 506

можно жать вообще через xz, только у него экстремальная компрессия требует ~670 мб свободной оперативной памяти, и 60 мб при распаковке.
И работает он очень долго, у меня 2 гб архив в 70 мб пережал, только жал он это где то минут 40.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Switch
сообщение 27.3.2016, 18:40
Сообщение #5


Стаж: 10 лет

Сообщений: 40
Благодарностей: 14
Полезность: 255

leshiy,
сделай просто в папки по дате и по кол-во памяти на vds
если нужна помощь пиши!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя butaford
сообщение 27.3.2016, 19:06
Сообщение #6
Стаж: 10 лет
Город: Воронеж

Сообщений: 5
Благодарностей: 6
Полезность: 0

В xz сжимать лучше на выделенных ресурсах под это дело, но не там где vds, можно попробовать сжимать в bzip2, но опять же, выгода в размере по сравнению с zip, минимальна
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя butaford
сообщение 27.3.2016, 20:17
Сообщение #7
Стаж: 10 лет
Город: Воронеж

Сообщений: 5
Благодарностей: 6
Полезность: 0

Сравнение различных форматов с максимальным сжатием :
Код
pnp@vrnint:~/test$ ls -lv
итого 89112
-rw-rw-r-- 1 pnp pnp 22725300 марта 26 22:35 auto-26032016-2159-awp_lego_2.dem
-rw-rw-r-- 1 pnp pnp 12277483 марта 26 22:35 auto-26032016-2159-awp_lego_2.dem.bz2
-rw-rw-r-- 1 pnp pnp 12157800 марта 26 22:35 auto-26032016-2159-awp_lego_2.dem.gz
-rw-rw-r-- 1 pnp pnp 10433748 марта 26 22:35 auto-26032016-2159-awp_lego_2.dem.xz
-rw-rw-r-- 1 pnp pnp 11057864 марта 27 21:02 auto-26032016-2159-awp_lego_2.rar
-rw-rw-r-- 1 pnp pnp 12157964 марта 27 20:38 auto-26032016-2159-awp_lego_2.zip
-rw-rw-r-- 1 pnp pnp 10423921 марта 27 21:04 auto-26032016-2159-awp_lego_2.7z
pnp@vrnint:~/test$ ls -lvh
итого 88M
-rw-rw-r-- 1 pnp pnp 22M марта 26 22:35 auto-26032016-2159-awp_lego_2.dem
-rw-rw-r-- 1 pnp pnp 12M марта 26 22:35 auto-26032016-2159-awp_lego_2.dem.bz2
-rw-rw-r-- 1 pnp pnp 12M марта 26 22:35 auto-26032016-2159-awp_lego_2.dem.gz
-rw-rw-r-- 1 pnp pnp 10M марта 26 22:35 auto-26032016-2159-awp_lego_2.dem.xz
-rw-rw-r-- 1 pnp pnp 11M марта 27 21:02 auto-26032016-2159-awp_lego_2.rar
-rw-rw-r-- 1 pnp pnp 12M марта 27 20:38 auto-26032016-2159-awp_lego_2.zip
-rw-rw-r-- 1 pnp pnp 10M марта 27 21:04 auto-26032016-2159-awp_lego_2.7z
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: