verzeichniss suche funktioniert nicht

D

deepware

Gast
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.

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
 
Oben