Помогите реализовать скрипт для linux

  • Автор темы MihailM
  • Дата начала
M

MihailM

Здравствуйте , помогите реализовать скриптик на bash .

1. Удаление определенных файлов их каталога каталогов *. указанный тип файлов
2. Копирование - с этим справился
3. Упаковка всех файлов из каталога , или указанных каталогов (?).
4. Создание листинга определенного каталога
Вот мой пример :
PHP:
#!/bin/bash
cp -r откуда   "куда копировать" 
rm путь/*.ztmp
bzip2 -z folder/*
Хотел реализовать типа этого
PHP:
для Windows 
for /F %%A in ('dir ..\maps /A-D /S /B') do bzip2 -z "%%A"
ну не знаю как правильно это сделать .
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
554
SteamM, find, find и ещё раз find
1)
PHP:
find /full/path/to/dir -type f -iname "*.ztmp" -delete
3)
PHP:
find /full/path/to/dir -type f -iname "*.txt" -exec bzip2 -kq {} \; # ключ -z необязателен
4)
PHP:
find /directory > listing.txt
 
M

MihailM

Tallanvor,
1) а здесь он по всем папкам будет искать ?
Кстати а я rm пробывал .
3) Кстати а там отдельно файлы архивируются , а то это всё для FastDL , хотел приспособить .
-z для Windows я вроде дорабатывал , вроде этот ключ удаляет исходный файл , а может и без ключа . Давно было уже и не помню .
4) ясно а определенный тип файлов . А то есть примере здесь , боюсь накосячить :)
Про find , это понятно , но как её приспособить правильно :)

А так спасибо буду мудрить тестировать !
 
Последнее редактирование модератором:

Monomizer

Держу JDW в бане.
Сообщения
1,947
  • Команда форума
  • #4
Tallanvor,
1) а здесь он по всем папкам будет искать ?
Кстати а я rm пробывал .
3) Кстати а там отдельно файлы архивируются , а то это всё для FastDL , хотел приспособить .
-z для Windows я вроде дорабатывал , вроде этот ключ удаляет исходный файл , а может и без ключа . Давно было уже и не помню .
4) ясно а определенный тип файлов . А то есть примере здесь , боюсь накосячить с переделкой для FastDL:)
Про find , это понятно , но как её приспособить правильно :)

А так спасибо буду мудрить тестировать !
К первому
/full/path/to/dir - указывай свой путь
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
554
SteamM, смотри, вот пример скрипта, который юзаю я.
Да, именно для фастдл
Он не совсем идеален (есть пару вещей, которые мне не очень нравятся), но вцелом, задачу свою выполняет

PHP:
#!/bin/bash
#script must copy and archives all files

# параметр $1 - тип игры (css или csgo)
# параметр $2 - название скрипта запуска сервера, (папка с сервером) например awp, mg, public, etc.
# параметр $3 - внутренняя папка игры (cstike для css, csgo для csgo)

# rsync вместо cp
sourcedir="/home/servers/gameservers/$1/$2/$3"
destdir="/var/www/fastdl/$1/$3"
        if ! [ -f ${desrdir} ] ; then
                mkdir -p -m 755 ${destdir}
        fi
for fold in maps materials models resource sound
do
        mkdir -p -m 755 ${destdir}/${fold}
        cp -Rn ${sourcedir}/${fold}/* ${destdir}/${fold}/
        find ${destdir}/${fold} -exec bzip2 -q {} \;
#       bzip2 -qk ${sourcedir}/${fold}/ > ${destdir}/${fold} {}\;
done
exit 0
 
M

MihailM

Tallanvor, а как его запускать то ,
а то меня вот это запутало . Если я правильно понял ты сам уже подставляешь нужные ?
Впринципе я тоже использую этот скрипт ,но чтобы его доработать , там просто ужас :))
А по поводу доработки , вот 1 код , чтобы не копировать и не сжимать их папки мода *.ztmp. Зачем они нужны то .
И кстати интересно , а как добавить несколько типов файлов ? , еще один ключ -iname "*.txt" но с другим типом .Или же как то по другому тогда .
Но я по другому решил сделать .
Сначала удаление темп. файлов , потом копирование 3 основных папок . А потом уже архивирование всех файлов в bzip2 с удалением исходников.

Кстати а 7zip , как архивирует то в bzip2. Нормально потом игре , не конфликтов ?
А так еще раз Спасибо !!!

PHP:
#!/bin/bash
#
# {mod}- модификация игры (cs,csgo,tf2 итд...)
# /var/www/html/fastdl/ - путь до нужной папки где FastDL 
#


find /home/{mod}server/serverfiles/{mod}/ -type f -iname "*.ztmp" -delete
cp -r /home/{mod}server/serverfiles/{mod}/maps  /var/www/html/fastdl/
cp -r /home/{mod}server/serverfiles/{mod}/materials /var/www/html/fastdl/
cp -r /home/{mod}server/serverfiles/{mod}/models /var/www/html/fastdl/
cp -r /home/{mod}server/serverfiles/{mod}/sound /var/www/html/fastdl/

find /var/www/html/fastdl/ -type f -iname "*.ztmp" -delete

find /var/www/html/fastdl/ -type f -iname "*.*" -exec bzip2 -q {} \;
Хотелось бы добавить еще и исключения для некоторых типов файлов .
 
Последнее редактирование модератором:

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
554
SteamM, и да и нет.
Я подставляю своё, но при запуске скрипта.
Т.е.
./script.sh css awp cstrike
Это сделано для универсальности, так как серверов много и плодить сучности неохота)

Добавлено через 1 минуту
А по поводу доработки , вот 1 код , чтобы не копировать и не сжимать их папки мода *.ztmp. Зачем они нужны то .
Но я по другому . сначала удаление темп. файлов , потом копирование 3 основных папок . А потом уже архивирование всех файлов в bzip2 с удалением исходников.
Кстати а 7zip , как архивирует то в bzip2. Нормально потом игре , не конфликтов ?
Можешь как-то перефразировать? А то вообще не понял о чём речь идёт))
 
Последнее редактирование:
M

MihailM

Tallanvor,ну там я добавил , чтобы на сервере перед копированием в FastDL , я удаляю *.ztmp , зачем они нужны то . И некоторые типы так же хотелось бы добавить .

А по поводу 7zip , он нормально архивирует в bzip2 . В игре , нет потом конфликтов когда файлы с качались клиенту. Типа не распаковалось что у кого итд...
По остальному добавил свой пример на основе твоего сообщения .
Еще раз спасибо , как нибудь попробую твой скрипт .
ну похоже я его вряд ли осилю , у меня нет столько серверов судя по 2-му параметру :))
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
554
А по поводу 7zip , он нормально архивирует в bzip2
На Лине используется bzip2, а не 7z - это раз
Второе - клиент заточен под использование этого типа архивов (хотя поддержка *.ztmp тоже есть, но bzip2 сжимает лучше)

cp -r /home/{mod}server/serverfiles/{mod}/maps  /var/www/html/fastdl/
cp -r /home/{mod}server/serverfiles/{mod}/materials /var/www/html/fastdl/
cp -r /home/{mod}server/serverfiles/{mod}/models /var/www/html/fastdl/
cp -r /home/{mod}server/serverfiles/{mod}/sound /var/www/html/fastdl/
Вот смотри, одна и та же команда выполняется 4-ре раза, меняются только конечные папки.
Я именно для этого и использовал цикл, ибо оптимизация и читаемость скрипта повышается.
Так, как сделал ты - не критично, оно будет работать и не возбраняется, но всё-же проигрых в скорости будет. Небольшой, но сам факт :)

Добавлено через 1 минуту
Хотелось бы добавить еще и исключения для некоторых типов файлов .
Исключение делал уже на основе nginx'а, но вот только конкретно в этих папках нечего исключать - всё клиенту может понадобиться :)
 
Последнее редактирование:
M

MihailM

На Лине используется bzip2, а не 7z - это раз
Ага точно просто где мож давно вроде бы можно с помощью 7z архивировать в bz2 . Хотя может просто ошибся .
Я именно для этого и использовал цикл
Если бы я знал как это пишется :)

Исключение делал уже на основе nginx'а, но вот только конкретно в этих папках нечего исключать - всё клиенту может понадобиться
Ну эти я думаю [*.ztmp] точно вряд ли понадобятся, и еще некоторые к примеру звуки в МР3 сжатие вроде бы там 0 , да и потом если я знаю какие точно вряд ли понадобятся . Вот их бы исключить . Или файл или по маске :))
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
554
Если бы я знал как это пишется
Так в моём примере это уже есть :)

PHP:
for fold in maps materials models resource sound 
do
# fold - это переменная, которой по очереди присваиваются значения, перечисленные после in
# далее просто берёшь путь к папке cstrike, например /home/gameservers/css_awp/cstrike/
# и в конец подставляешь то, что у тебя объявлено в fold
# /home/gameservers/css_awp/cstrike/${fold}
# далее выполняешь нужные тебе команды
# конец цикла 
done

Попробуй вчитаться и вдумчиво разобрать мой велосипед)
Это несложно :secret:
 
M

MihailM

Tallanvor, ну это в принципе да, там вроде легко . Но я говорю я с написанием на bash даже и не знаю что и как .Я даже незнаю , как к этому bash и подступиться. Ну значит можно и твой взять , чуток подшаманив его .
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
554
SteamM, можно :)
Меняешь пути на свои, это раз
И во вторых, отдельной строкой в конце скрипта (но перед exit) добавляешь ещё одну строчку - с поиском и удалением *.ztmp в нужной тебе директории.
 
M

MihailM

Tallanvor, ну это понятно что пути свои , а добавить еще можно в исключения ?
примерно так
PHP:
find /full/path/to/dir -type f -iname "*.тхт" -iname "*.ztmp" -delete
Так прокатит ?
А потом лучше же удалять из папки с сервером ztmp,то есть в начало скриптика :)
Ну это я так уже как бы моё мнение .
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
554
SteamM, стоп, о каких исключениях идёт речь?
-iname - это маска для поиска по имени файла, т.е. тут ты задаешь что искать, а не что игнорить
 
M

MihailM

Tallanvor, ну да ,то есть маску для удаления файлов .. , вот еще такой же -iname добавить для маски можно , то есть 2 типа файла искать ?
 

Tallanvor

НЕ ПИШУ я плагины!!! И не правлю! И ваще...
Сообщения
1,352
Реакции
554
SteamM, тогда можно писать несколько -iname подряд
по умолчанию подразумевается, что присутствует ключ -and, если не указано иное
Вот неплохо рассказано, что и к чему
 

Похожие темы

Сверху Снизу