Автозагрузка / архивация / удаление демок без SM

Danyas

Участник
Сообщения
2,173
Реакции
1,072
Для этого нужно:
1. Руки (желательно хотя бы одну прямую)
2. Возможно понадобиться голова (одной будет достаточно)
3. Доступ к консоли
4. Crontab
5. find
6. Сервер с tv_autorecord 1. Путь - /home/server/
7. Веб-сервер. Путь - /var/www/danyas.pp.ua/

Первое что нужно сделать - автоматически перенести демки в папку.
Это можно сделать с помощью такой команды.
PHP:
 find /home/server/cstrike -name *.dem -type f -mmin +1 -exec mv {}  /var/www/danyas.pp.ua/demos/ {} \;
  • find - команда для поиска
  • name *.dem - поиск файлов с маской *.dem
  • type f - выбираем тип поиска: f (файл)
  • mmin +1 - время последнего изменения файла больше 1-й минуты
  • exec mv {} /var/... - выполнение mv (перемещения) {} (найденные файлы) и папка в которую мы демки заливаем.
Важно что бы папка /home/server/cstrike была уже создана!

Если всё работает - прописываем в crontab (автоматизируем)
PHP:
*/5 * * * * find /home/server/ -name *.dem -type f -mmin +1 -exec mv {}  /var/www/danyas.pp.ua/demos/ {} \;
*/5 * * * * - выполнение данной команды каждых пять минут

Ждем и ловим профиты, можно поставить чайник, так как основная работа сделана.
Если он у вас есть рекомендую использовать "загрузчик демок"
PHP:
new bool:g_bIsRecording = false;
#define DEMOPATH "/var/www/danyas.pp.ua/demos/"
#define DEMOPREFIX "autodemo"
public Plugin:myinfo = {name = "Source.TV Recorder",author = "Danyas"}
public OnPluginStart(){StopRecord();CheckStatus();}
public OnMapEnd(){StopRecord();}
public OnClientPutInServer(client){CheckStatus();}
public OnClientDisconnect_Post(client){CheckStatus();}
public CheckStatus(){if(GetClientCount(true) >= 2){StartRecord();}else if(g_bIsRecording){StopRecord();}}
public StartRecord()
{
	if(!g_bIsRecording)
	{
		decl String:sTime[32], String:sMap[32];
		FormatTime(sTime, sizeof(sTime), "%Y-%m-%d_%H.%M", GetTime());
		GetCurrentMap(sMap, sizeof(sMap));
		ServerCommand("tv_record %s%s-%s-%s.dem", DEMOPATH, DEMOPREFIX, sTime, sMap);
		PrintToServer("Recording to %s%s-%s-%s.dem", DEMOPATH, DEMOPREFIX, sTime, sMap);
		g_bIsRecording = true;
	}
}
public StopRecord(){ServerCommand("tv_stoprecord");g_bIsRecording = false;}


Сжатие демок
Оффтоп
Это экономит место в ДВА раза, так как коеф. сжатия около 50%

Для этого используем набор функций как из первого действия:
PHP:
*/5 * * * * find /var/www/danyas.pp.ua/demos/ -name *.dem -type f -mmin +5 -exec zip -mj  {}.zip {} \;
zip -m {}.zip {}
zip - команда сжатия. (возможно нужно будет установить отдельно)
параметр -m нужен для удаления файла который был успешно запакован
параметр -j нужен для этого.
{}.zip {} - трудно понять, да? На самом деле всё просто.
{} заменяется на название файла, например 1.dem
У нас получиться в итоге zip -m 1.dem.zip 1.dem - мы создаем архив 1.dem.zip и перемещаем туда файл 1.dem

Теперь у нас демки сами загружаются и запаковываются максимально простым способом.

Авто-удаление демок
PHP:
0 4 * * * find /var/www/danyas.pp.ua/demos/ -name *.zip -type f -mtime +14 -exec rm -f {} \;
Тут я думаю комментировать нечего, команда rm -f принудительно удаляет файл.


Автор - Danyas
Специально для hlmod.ruhlmod.ru
 
Последнее редактирование:

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,062
Реакции
267
Мне кажется нет смысла переносить демки, лишняя нагрузка/процессы/телодвижения и т.д.
Проще сделать сим линк
C-подобный:
ln -s /home/servers/server_1/cstrike/demos /home/www/demos/files/server_1

Добавлено через 49 минут
скрипт сжатия не очень хороший.
в архив добавляется полный каталог расположения демки.
вот путь из скрипта (открыл проводиком)
C-подобный:
C:\Users\HooLIGUN\Desktop\mix_2015-06-27-1702-de_cpl_strike.dem.zip\var\www\hooligun\data\steam\servers\mix1\cstrike\demos\mix
 
Последнее редактирование:
  • Мне нравится
Реакции: TWRP

Danyas

Участник
Сообщения
2,173
Реакции
1,072
Мне кажется нет смысла переносить демки, лишняя нагрузка/процессы/телодвижения и т.д.
Проще сделать сим линк
C-подобный:
ln -s /home/servers/server_1/cstrike/demos /home/www/demos/files/server_1

Добавлено через 49 минут
скрипт сжатия не очень хороший.
в архив добавляется полный каталог расположения демки.
вот путь из скрипта (открыл проводиком)
C-подобный:
C:\Users\HooLIGUN\Desktop\mix_2015-06-27-1702-de_cpl_strike.dem.zip\var\www\hooligun\data\steam\servers\mix1\cstrike\demos\mix

У меня вот так вот

ANlKsfs.png

Может что-то упустил.

Раньше было через bzip2, но я понял что он не очень
 

Danyas

Участник
Сообщения
2,173
Реакции
1,072
Скачай свою же демку,извлеки и посмотри каталоги :)
http://danyas.pp.ua/v34/demos/public_27016/autodemo-2015-06-27_16.15-2000.dem.zip
Соглашусь что bzip не очень.

Параметр j вроде фиксит
-j

--junk-paths

Store just the name of a saved file (junk the path), and do not store directory names. By default, zip will store the full path (relative to the current directory).
 
Сверху Снизу