Jump to content
not community
Sign in to follow this  
alabamaster1337

Автоархивация demo на VDS Linux

Recommended Posts

Первый скрипт
Скрипт автоархивирует демо и перемещает в отдельную папку, демо которое еще пишется он не трогает

1) Создайте файл demo.sh в любой директории
2) В него вставьте код:

#!/bin/sh
DIR="/hltv/demo/"
DEMO="/hltv/zipdemo/"
for i in $( ls $DEMO/*.dem | cut -d . -f1); do zip "$i".zip -m "$i".dem; done
mv $DEMO/*.zip $DIR

DIR - путь где хранятся demo
DEMO - путь куда кидать архивы zip

Важно!
Для корректной работы в название demo не должно быть спец. символов типа @ # $ ^ & * " ' ` и т.п.

Второй скрипт
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 интервалом в несколько минут

*/30 * * * * cd /home/pnp/public_html/scripts/demo && sh start.sh >/dev/null  2>&1

Пример выше выполняет скрипт раз в 30 минут

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...