D
deepware
hi, ich habe angefangen mich ein wenig mit bash scripten zu beschäftigen und hab mir auf meinem win system extra cygwin installiert.
zum problem, mein freund hat einen rootserver welcher mit debian läuft, auf diesem sind verschiedene gameserver installiert.
um die dateien welche in einigen verzeichnissen per ftp hochgeladen werden zu syncronisieren musste ein script her.
es handelt sich um mehrere counterstrike source server auf diesem root welche z.b. die maps verzeichnisse auf ein gemeinsames
verzeichniss abgleicht welches als sogenanntes fastdownload verzeichniss fungiert.
zum packen und syncronisieren nutze ich die funktion "packer" welche auch problemlos funktioniert,
danach sollen einfach nur die verzeichnisse auf veränderungen geprüft werden und wenn sie vorhanden sind eine 2. prüfung erfolgen,
ob die dateien noch im upload sind, wenn der upload fertig ist soll wieder syncronisiert werden.
nun das problem die funktion "suche" hängt in einer endlosschleife fest weil sie keine veränderungen registriert.
ich weis das der script evtl. komisch aussieht, ist auch mein erster bashscript.
achso die überprüfung auf veränderungen soll nicht mit inotify oder wie das heißt erfolgen.
mfg henry
zum problem, mein freund hat einen rootserver welcher mit debian läuft, auf diesem sind verschiedene gameserver installiert.
um die dateien welche in einigen verzeichnissen per ftp hochgeladen werden zu syncronisieren musste ein script her.
es handelt sich um mehrere counterstrike source server auf diesem root welche z.b. die maps verzeichnisse auf ein gemeinsames
verzeichniss abgleicht welches als sogenanntes fastdownload verzeichniss fungiert.
zum packen und syncronisieren nutze ich die funktion "packer" welche auch problemlos funktioniert,
danach sollen einfach nur die verzeichnisse auf veränderungen geprüft werden und wenn sie vorhanden sind eine 2. prüfung erfolgen,
ob die dateien noch im upload sind, wenn der upload fertig ist soll wieder syncronisiert werden.
Code:
#!/bin/bash
#############################################################
# FastdownloadScript zum automatischen Dateiabgleich und #
# Syncronisation auf Rootservern. #
# Zur verwendung auf Counter Strike Source servern mit #
# Tecbase Webinterface. #
# #
# Es läuft selbstständig im hintergrund und gleicht die #
# Verzeichnisse für den Fastdl ab packt die Dateien und #
# spiegelt sie in das Verzeichniss für den Fastdl link #
# auf den selben Root. #
# Es werden dabei mehrere Game Server in ein gemeinsames #
# Fastdl Verzeichniss gespiegelt. #
# Gelöschte Maps Sounds oder dergleichen werden entfernt. #
# #
# Bitte Pfade an eigenen Root anpassen ! #
# #
# z.b.: #
# dir1="/weis/der/geier/wo/deine/server/sind" #
# fdldir="/dein/fastdl/verzeichniss" #
# #
# Script zur freien verwendung, darf auch modifiziert, #
# oder verbessert werden. #
# #
# Script Release 0.0.1 by DeepWare #
#############################################################
"
################################
# Release Version 0.0.1 #
################################
# Testpfade und variablen !!!! #
################################
fdldir="/var/www/fastdl/cstrike/maps/test"
dir1="/home/*/server/css_*/css/cstrike"
#fdldir="/home/test"
include="--include=*/ --include=*.bz2 --include=*.jpg --include=*.png"
exclude="--exclude=*.txt --exclude=*.ztmp --exclude=*.wav --exclude=*.mp3 --exclude=*.nav --exclude=*.bsp --exclude=*.res"
datei_finder="find $dir1 -type f -amin -5 -ls"
optionen=(
--include='*/'
--include='*.bz2'
--include='*.jpg'
--include='*.png'
--exclude='*.txt'
--exclude='*.ztmp'
--exclude='*.wav'
--exclude='*.mp3'
--exclude='*.nav'
--exclude='*.bsp'
--exclude='*.res'
)
clear
function suche() {
# sollte ok sein
a="ls -laR ${dir1}/maps"
a1="ls -laR ${dir1}/sound"
a2="ls -laR ${dir1}/models"
a3="ls -laR ${dir1}/materials"
while test 1
do
clear
echo ""
echo " !!! Dateien werden geprüft !!! "
echo ""
sleep 1
b="ls -laR ${dir1}/maps"
b1="ls -laR ${dir1}/sound"
b2="ls -laR ${dir1}/models"
b3="ls -laR ${dir1}/materials"
if [ $a != $b -o $a1 != $b1 -0 $a2 != $b2 -o $a3 != $b3 ]
then
dateitest
else
a=$b
a1=$b1
a2=$b2
a3=$b3
clear
echo ""
echo " !!! Dateien sind aktuell !!! "
echo ""
sleep 1
fi
done
}
function dateitest() {
# testen
aa="ls -laR ${dir1}/maps"
clear
echo ""
echo " !!! Prüfe erneut !!! "
echo ""
sleep 1
bb="ls -laR ${dir1}/maps"
if [ $aa = $bb ]
then
echo ""
echo " !!! Datei wurde gelöscht !!! "
echo " !!! Starte Abgleich !!! "
echo ""
sleep 3
clear
packer
else
clear
echo ""
echo " !!! Datei im Upload !!! "
echo ""
sleep 1
c="find ${dir1}/maps -type f -amin -1"
if [ -e $c ]
then
clear
echo ""
echo " !!! $c wird gerade hochgeladen !!! "
echo ""
sleep 2
d="$(ls -l $c | awk '{print $5}')"
if [ $d -eq $d2 ]
then
a=""
b=""
aa=""
bb=""
c=""
d=""
d2=""
clear
echo ""
echo " !!! fertig hochgeladen !!! "
echo ""
sleep 2
packer
fi
fi
fi
sleep 2
}
function packer() {
# funktion ist ok
while true
do
clear
echo ""
echo " !!! Dateien werden gepackt !!!"
echo ""
sleep 1
find $dir1 \( -name "*.bsp" -o -name "*.nav" -o -name "*.res" -o -name "*.mp3" -o -name "*.wav" \) -exec bzip2 -9k '{}' \;
echo ""
echo " !!! Dateien sind gepackt !!! "
echo ""
sleep 1
clear
echo ""
echo " !!! Dateien werden Syncronisiert !!! "
echo ""
sleep 1
rsync -auv --delete ${dir1}/materials ${fdldir}
rsync -auv --delete ${dir1}/models ${fdldir}
rsync -auv "${optionen[@]}" --delete ${dir1}/maps ${fdldir}
rsync -auv "${optionen[@]}" --delete ${dir1}/sound ${fdldir}
echo ""
echo " !!! Dateien Syncronisiert !!! "
echo ""
sleep 1
clear
suche
done
}
packer
nun das problem die funktion "suche" hängt in einer endlosschleife fest weil sie keine veränderungen registriert.
ich weis das der script evtl. komisch aussieht, ist auch mein erster bashscript.
achso die überprüfung auf veränderungen soll nicht mit inotify oder wie das heißt erfolgen.
mfg henry