Symlinks und CSS Update
Wer Symlinks einsetzt, war bei dem Chaos Update recht flott wieder mit all seinen Servern online. Der Hintergrund ist einfach. Man muss nur einen Server updaten an Stelle von einem Update für jeden einzelnen Server.
Nachdem man sein Hauptverzeichnis auf den neuesten Stand gebracht hat, muss man noch die Verlinkungen auf die neue Ordnerstruktur anpassen.
Ich hatte noch in der Nacht folgendes Bashscript an die User von easy-wi.com geschickt, dass hoffentlich, vorausgesetzt man modifiziert es für seine Zwecke, auch anderen bei der Bewältigung des Updates helfen wird:
#!/bin/bash
# Ulrich Block
# http://www.ulrich-block.de
# deinmasteruser muss auf den eigenen Masteruser angepasst werden
MASTERDIR="/home/deinmasteruser/masterserver/css"
MASTERUSER=`echo $MASTERDIR | awk -F '/' '{print $3}'`
if [ ! -d $MASTERDIR ]; then
echo "Please enter your masterserverpath at the skript first"
exit 0
fi
cd $MASTERDIR
if [ -d orangebox ]; then
if [ -d css ]; then
cd orangebox
find . -type f | while read FILES; do
FOLDER=`dirname "$FILES"`
if [ ! -d "../css/$FOLDER" ]; then
su -c "mkdir -p ../css/$FOLDER" $MASTERUSER
fi
if [ ! -f "../css/$FILES" ]; then
echo "Moving $FILES"
su -c "mv \"$FILES\" ../css/\"$FILES\"" $MASTERUSER
fi
done
cd ..
else
su -c "mv orangebox css" $MASTERUSER
fi
if [ -d orangebox ]; then
echo "removing old, not needed data from masterserverdir"
rm -rf orangebox
fi
cd ..
su -c "screen -dmS update.css ./steam -command update -game \"Counter-Strike Source\" -retry -verify_all -dir $MASTERDIR" $MASTERUSER
fi
find /home/*/server/*/*/orangebox/ -maxdepth 1 -type d -name "cstrike" | sed 's/orangebox\/cstrike//g' | while read DIR; do
USER=`echo $DIR | awk -F '/' '{print $3}'`
echo "Found old CSS Installation $DIR and moving it"
cd $DIR
if [ -d orangebox ]; then
if [ -d css ]; then
cd orangebox
find . -type f | while read FILES; do
FOLDER=`dirname "$FILES"`
if [ ! -d "../css/$FOLDER" ]; then
su -c "mkdir -p ../css/$FOLDER" $USER
fi
if [ ! -f "../css/$FILES" ]; then
echo "Moving $FILES"
su -c "mv \"$FILES\" ../css/\"$FILES\"" $USER
fi
done
cd ..
else
su -c "mv orangebox css" $USER
fi
if [ -d orangebox ]; then
echo "removing old, not needed data from $DIR"
rm -rf orangebox
fi
fi
echo "removing outdated symlinks in $DIR"
find -L $DIR/ -type l -delete
echo "Creating new Symlinks in $DIR"
su -c "cp -sr $MASTERDIR/* $DIR/ > /dev/null 2>&1" $USER
done