Hi Candid!
Perfekt wäre es natürlich, das ganze per ftp oder rsync zur Verfügung zu stellen. Dann könnte man das zum Beispiel einmal im Monat automatisch auf dem lokalen Rechner aktualisieren lassen, falls sich mal was ändert. Dann bräuchten die Devs auch nicht immer die Zip-Datei neu packen. Aber das ist sehr umständlich, also könnte nicht mal jemand ein kleines Shellscript schreiben, das aufgrund der Last-Modified-Header überprüft, ob sich die Zipdatei geändert hat und diese dann in ein bestimmtes Verzeichnis entpackt? :-)
Ich habe da mal gerade was gebastelt:
--------------------------------------------------------------------------------------------------
#!/bin/bash
Variablen Deklaration
FILE="http://aktuell.de.selfhtml.org/extras/src.zip"
if [ -z $1 ]; then
DESTDIR="$HOME/selfhtml/"
if [ ! -d $DESTDIR ]
mkdir $DESTDIR
fi
else
DESTDIR=$1
fi
MATCH="kein Download."
echo ''
echo "Ueberpruefe auf neuere Version von $FILE ...."
echo ''
wget -N $FILE &> temp.dat
RESULT=$(cat temp.dat | grep 'kein Download' | awk '{print $13" "$14}')
if [[ $RESULT == $MATCH ]]; then
echo 'Datei auf dem Server ist gleich!'
else
echo "Es gibt eine neuere Version. Ich entpacke sie nach $DESTDIR!"
if [ ! -d $DESTDIR ]; then
mkdir $DESTDIR
elif [ -d $DESTDIR ]; then
echo 'Es existiert bereits eine alte Version. Ich loesche sie daher!'
cd $DESTDIR
rm *
cd -
fi
/usr/bin/unzip -d $DESTDIR src.zip
echo ''
echo 'OK, das waere erledigt. Ich beende mich!'
fi
rm temp.dat
echo ''
exit 0
--------------------------------------------------------------------------------------------------
Der interessanteste Teil ist wohl das «wget -N», das eine Datei nur herunterlädt, wenn deren Timestamp neuer als die gleichnamige, lokale Datei ist. Daraus ergibt sich jedoch gleichzeitig die Einschränkung, dass das Zip-Archiv auch nach dem Entpacken existieren muss.
Die Benutzung des Programms ist eigentlich ganz einfach:
- in eine Datei kopieren, diese ausführbar machen (chmod u+x fetch)
- als Parameter den absoluten Pfad des Verzeichnisses angeben, in der die Datei entpackt werden soll; wird kein Parameter angegeben, wird das Verzeichnis selfhtml im Home-Ordner des aktuellen Benutzers gewählt und angelegt, wenn es dieses nicht bereits gibt
Für mögliche Verbesserungen stehe ich offen ;-) Insbesondere die Überprüfung mittels grep und awk, ob es eine neue Version gibt, ist nicht besonders schön und setzt auch voraus, dass die Konsole deutsch spricht.
Grüße,
Fabian St.