Sprawa nie jest skomplikowana, wymaga jedynie czytania ze zrozumieniem i trochę rozumu - już bardziej łopatologicznie nie umiałem tego napisać.
Całość składa się z 2 części tj.
1. Zainstalowania (za dużo powiedziane, bardziej pasuje skopiowania) u siebie na dedyku skryptu który zajmie się spakowaniem i przesłaniem plików na ftp.
2. Wrzucenia do odpowiedniego katalogu skryptu prezentującego pliki (w tym wypadku dema).
Instalacja:
Najpierw zajmiemy się skryptem który wysyła dema. Ściągamy załącznik (wysylanie.zip), rozpakowujemy - otwieramy w jakims edytorze tekstu i ustawiamy swoje dane (co i jak jest poniżej).
> Ustawienie skryptu (to co należy zmienić jest na kolorowo):
Należy ustawić adres serwera ftp, użytkownika ftp i hasło na ftp
oraz docelowy folder na ftp do którego będą wrzucane dema, oraz ścieżkę do katalogu cstrike w którym znajdują się nagrywane dema
_host="host"
_user="uzytkownik"
_pass="haslo"
_pliki="*.zip"
katalog_zdalny="dema"
katalog_lokalny="outbox"
katalog_cstrike="$HOME/hlds_l/cstrike/*.dem"
//tego już nie ruszacie
mkdir $katalog_lokalny
find $katalog_cstrike -mmin +2 -exec mv {} $katalog_lokalny ;
gzip -1f -S .zip $katalog_lokalny/*.dem
cd $katalog_lokalny
ftp -in $_host << KONIEC
user $_user $_pass
binary
mkdir $katalog_zdalny
cd $katalog_zdalny
send $_pliki
close
KONIEC
rm -f $katalog_lokalny
Wrzucamy na serwer (najlepiej do katalogu domowego - w innym wypadku należy poprawić ścieżki odpowiednio). Kolejną rzeczą jest ustawienie prawa do wykonywania
aby to zrobić, wpisujemy
chmod +x ./wysylanie.sh
Wiadomo że nie będziemy co chwilę się łączyć do serwera i uruchamiać skrypt aby dema pojawiły się na stronie. W tym celu dodamy wpis do CRONTAB'a uruchamiający powiedzmy co 10 minut (dema będą dodawane min. 2 a max 10 minut po zakończeniu mapy).
wpisujemy
crontab -ewciskamy insert i wpisujemy to:
*/10 * * * * ./wysylanie.sh
następnie wciskamy esc i shift+zz
Działanie skryptu:
1.Szukamy dem w katalogu cstrike do którego należy podać scieżkę
2. Pliki które zostały zmodyfikowane ostatnio później niż 2 minuty zostają przenoszone do katalogu "outbox" (katalog sam się utworzy, nie trzeba nic robić a po wysłaniu demek zostanie usunięty wraz z zawartością). Warunek modyfikacji > 2 min chroni przed kopiowaniem dem które się aktualnie nagrywają.
3. Po przeniesieniu plików .dem do tymczasowego katalogu zostają one spakowane gzipem.
4. Następnie następuje połączenie z serwerem ftp i upload spakowanych plików.
5. Po wysłaniu dema z tymczasowego folderu wraz z nim są usuwane.
Do działania oczywiście wymagany jest zainstalowany klient ftp, oraz gzip (ja zrobilem na podstawowym ftp bo najczęściej jest on wbudowany w podstawową instalację linuksa ale mozna po małych modyfikacjach skorzystać z innych). Katalog w którym znajduje się wysylanie.sh musi miec prawa zapisu - proponuje w $home go zostawić
Gdy już mamy dema na naszym ftp w katalogu który ustawiliśmy (w naszym wypadku katalog będzie się nazywał dema). Wrzucacmy załącznik dema.php do katalogu głównego ftp - chodzi o to aby plik dema.php był w tym samym katalogu co katalog "dema". Uwaga jeśli zmienialiśmy nazwę katalogu w skrypcie do którego są wysyłane dema, należy również w dema.php to zmienić (na samym początku).
Skrypt działa, testowałem - co prawda na jednym pliku .dem więc jeśli byłyby problemy z niepakowaniem wiekszej ilości plików przed wysłaniem to proszę o PW. Jeśli ktoś nie ma pojęcia jak to zrobić po przeczytaniu tego to niech da sobie spokój, ponieważ wszystko ogranicza się do wpisania odpowiednich danych. Skrypt pisałem kilka minut, może ktoś znajdzie lepsze rozwiązanie.
Przykład zastosowania: http://piaskownica.do.pl/dema
Autorem skryptu prezentującego dema na www jest Wizu, wrzucającego, pakującego dema DB.