aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mayor/bin/backup.sh156
-rw-r--r--mayor/bin/lock.sh42
-rwxr-xr-xmayor/bin/mayor24
-rw-r--r--mayor/bin/unlock.sh49
-rw-r--r--mayor/bin/update.sh14
5 files changed, 252 insertions, 33 deletions
diff --git a/mayor/bin/backup.sh b/mayor/bin/backup.sh
index 46a11f4b..af02cccf 100644
--- a/mayor/bin/backup.sh
+++ b/mayor/bin/backup.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-OPT_SPEC="hf:d::"
-LONG_OPT_SPEC="help,file:,backup-file:,dir:,backup-dir::"
+OPT_SPEC="hnlf:d::"
+LONG_OPT_SPEC="help,now,skip-lock,file:,backup-file:,dir:,backup-dir::"
PARSED_OPTIONS=$(getopt -n "$0" -a -o $OPT_SPEC --long $LONG_OPT_SPEC -- "$@")
OPTIONS_RET=$?
eval set -- "$PARSED_OPTIONS"
@@ -15,13 +15,22 @@ A parancs segítségével menthetjük a MaYoR rendszer adatbázisait, aktuális
beállításait. A mentés alapértelmezetten az aktuális dátum alapján lesz elnevezve
"YYYYmmdd.tgz" alakban (pl. $DATE.tgz).
+Lehetőség van azonnali mentésre, akkor is, ha már volt aznap mentés,
+ehhez használjuk a --now kapcsolót.
+
A mentési könyvtár, a szükséges jelszavak és egyéb mentési paraméterek beállításait a
/etc/mayor/main.conf állományban kell megadni.
+Újdonság:
+ Ezentúl a backup folyamat egyben a napló Lock-file -vel történő ideiglenes zárolásával jár,
+ ha ezt el szeretnénk kerülni, akkor használjuk a --skip-lock kapcsolót.
+
Opciók:
- -h, --help: A parancs leírása (amit most olvasol...)
- -f, --file, --backup-file: A mentési állomány neve
- -d, --dir, --backup-dir: A mentési könyvtár elérési útja
+ -h, --help: A parancs leírása (amit most olvasol...)
+ -f, --file, --backup-file: A mentési állomány neve
+ -d, --dir, --backup-dir: A mentési könyvtár elérési útja
+ -l, --skip-lock: A mellőzi a mayor zárolását a backup futása alatt.
+ -n, --now: Mentést készít most/azonnal.
EOF
}
@@ -46,6 +55,14 @@ while [ $# -ge 1 ]; do
echo "Backup könyvtár: $BACKUPDIR"
;;
+ --skip-lock | -l ) SKIPLOCK=1
+ ;;
+
+ --now | -n ) DATE=$(date "+%Y%m%d_%H%M%S")
+ BACKUPFILE="$DATE"
+ #echo "Backup fájl: $BACKUPFILE.tgz"
+ ;;
+
-- ) shift
break
;;
@@ -73,6 +90,37 @@ if [ -z $BACKUPDIR ]; then
fi
fi
+### A lockfile beállítása
+
+if [ "$SKIPLOCK" != "1" ]; then
+ if [ ! -z $LOCKFILE ]; then
+ if [ "$VERBOSE" -gt 0 ]; then
+ echo -e "* A web-es elérés letiltása:"
+ echo -n "- Lock-file létrehozása... "
+ echo -e "kész."
+ fi
+ echo "$DATE: Backup fut... " > $LOCKFILE
+# echo -n " - Aktív munkamenetek törlése... " ### erre elvileg itt nincs szükség
+# $MYSQL $MYSQL_PARAMETERS -e"DELETE FROM mayor_login.session"
+# echo "kész."
+ else
+ if [ $VERBOSE -gt 0 ]; then echo -e "* A web-es elérés már le van tiltva..."; fi
+ fi
+else
+ if [ $VERBOSE -gt 0 ]; then echo -e "* A lock-olást a kérésedre kihagytam..."; fi
+fi
+
+function freeup_lock {
+if [ -e $LOCKFILE ]; then
+ if [ ! -z $LOCKFILE ]; then
+ if [ $VERBOSE -gt 0 ]; then echo -e "-"; echo -n "* A web-es hozzáférés engedélyezése:..."; fi
+ rm $LOCKFILE
+ if [ $VERBOSE -gt 0 ]; then echo -e "kész."; echo -e "-"; fi
+ fi
+fi
+}
+
+
##
# A könyvtárak létrehozása
##
@@ -80,8 +128,9 @@ fi
if [ ! -e $BACKUPDIR ]; then
mkdir $BACKUPDIR > /dev/null 2>&1
if [ $? -ne 0 ]; then
- echo "Nem sikerült a ${BACKUPDIR} könyvtárat létrehozni!"
- echo "MaYoR Backup failure!"
+ echo "*** Nem sikerült a $BACKUPDIR könyvtárat létrehozni!"
+ echo "**** MaYoR Backup failure! ****"
+ freeup_lock
exit 1
fi
fi
@@ -89,7 +138,8 @@ chown $WEB_SERVER_USER $BACKUPDIR
chmod 700 $BACKUPDIR
if [ -e $BACKUPDIR/$BACKUPFILE.tgz ]; then
- echo -e "\n\nERROR: már volt mentés: $BACKUPDIR/$BACKUPFILE.tgz\n"
+ echo -e "\n**** ERROR: már volt mentés: $BACKUPDIR/$BACKUPFILE.tgz ****\n"
+ freeup_lock
exit 1
fi
mkdir $BACKUPDIR/$BACKUPFILE
@@ -99,43 +149,101 @@ chmod 700 $BACKUPDIR/$BACKUPFILE
##
# mysql adatbázis mentése
##
+if [ $VERBOSE -gt 0 ]; then
+ echo -e "-"
+ echo -e "* Backup fájl: $BACKUPFILE.tgz"
+fi
if [ "$MYSQL_HOST" == "" ]; then
MYSQL_HOST="localhost"
fi
-if [ -f $MYSQL ]; then
+DB_INTEZMENYEK=''
+if [ -f $MYSQL ] && [ -f $MYSQLDUMP ]; then
+
+ if [ -f "$BASEDIR/config/my.cnf" ]; then
+ MYSQL_CONFIG="--defaults-extra-file=$BASEDIR/config/my.cnf" ##Vigyázat! a 'mysql' kliens rossz! Néha beleveszi a $(pwd) tartamát is!
+ TEST=$(echo "SHOW VARIABLES LIKE '%character_set_client%'" | $MYSQL "$MYSQL_CONFIG" | tail -n+2 | cut -f 2)
+### Csak character_set_client=utf8 engedélyezett
+ if [ "$TEST" == "utf8" ]; then
+ if [ $VERBOSE -gt 1 ]; then echo -e "- MySQL-connect OK (my.cnf)" ; fi
+ else
+ MYSQL_CONFIG="-h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PW --default-character-set=utf8"
+ fi
+ else
+ MYSQL_CONFIG="-h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PW --default-character-set=utf8"
+ fi
+
+### Ellenőrizzük
+ TEST=$(echo "SHOW VARIABLES LIKE '%character_set_client%'" | $MYSQL $MYSQL_CONFIG | tail -n+2 | cut -f 2)
+ if [ "$TEST" == "utf8" ]; then
+ if [ $VERBOSE -gt 1 ]; then echo -e "- MySQL-connect OK (utf8+user/passw)"; fi
+ else
+ echo -e "*** MySQL-connect ERROR (nem utf8 vagy hibás user/passw)"
+ exit 2
+ fi
+
DATABASES=''
- for DB in `echo 'SHOW DATABASES' | mysql -h$MYSQL_HOST -p$MYSQL_PW -u$MYSQL_USER`; do
+ for DB in $(echo 'SHOW DATABASES' | $MYSQL $MYSQL_CONFIG); do
if [[ ! $EXCLUDED_DBS =~ .*$DB.* ]] && { [[ $DB =~ ^mayor.* ]] || [[ $DB =~ ^naplo.* ]] || [[ $DB =~ ^intezmeny.* ]]; } then
DATABASES="$DATABASES $DB"
fi
done
+ DB_INTEZMENYEK=$($MYSQL $MYSQL_CONFIG -e "SET NAMES 'utf8'; SELECT rovidNev FROM mayor_naplo.intezmeny; " | tail -n+2 ) ### Elvileg itt sem lehetne ékezetes
else
- echo -e "\n\nERROR: A mysql kliens nem található: $MYSQL\n"
+ echo -e "*** MySQL ERROR: A mysql kliens nem található: $MYSQL\n"
+ freeup_lock
exit 2
fi
+
+##
+# Adatbázisok mentése
+##
+
+if [ $VERBOSE -gt 0 ]; then echo -e "* Adatbázisok mentése:"; fi
+
for DATABASE in $DATABASES; do
- mysqldump -R -h$MYSQL_HOST -p$MYSQL_PW -u$MYSQL_USER $DATABASE >> $BACKUPDIR/$BACKUPFILE/$DATABASE.sql
+ if [ ! -z $MYSQLDUMP ]; then
+ ### SET NAMES-hez: --set-charset
+ ### Szebb: --result-file=file_name
+# mysqldump $MYSQL_CONFIG -R --set-charset --result-file="$BACKUPDIR/$BACKUPFILE/$DATABASE.sql" $DATABASE
+ $MYSQLDUMP $MYSQL_CONFIG -R --set-charset --result-file="$BACKUPDIR/$BACKUPFILE/$DATABASE.sql" $DATABASE
+ else
+ mysqldump $MYSQL_CONFIG -R --set-charset --result-file="$BACKUPDIR/$BACKUPFILE/$DATABASE.sql" $DATABASE
+ fi
+ if [ $VERBOSE -gt 1 ]; then echo -e "- $DATABASE"; fi
done
+
##
# A honlap mentése
##
-
+if [ $VERBOSE -gt 0 ]; then echo -e "* Fájlok mentése:"; fi
mkdir $BACKUPDIR/$BACKUPFILE/log
cp -a $BASEDIR/log/revision $BACKUPDIR/$BACKUPFILE/log/revision
+if [ $VERBOSE -gt 1 ]; then echo -e "- revision"; fi
cp -a $BASEDIR/www $BACKUPDIR/$BACKUPFILE/www
+if [ $VERBOSE -gt 1 ]; then echo -e "- www/*"; fi
cp -a $BASEDIR/config $BACKUPDIR/$BACKUPFILE/config
-
+if [ $VERBOSE -gt 1 ]; then echo -e "- config/*"; fi
+
+if [ $VERBOSE -gt 0 ]; then echo -e "* Templétek mentése:"; fi
+for RN in $(echo $DB_INTEZMENYEK); do ## a nyomtatási templétek is legyenek benne a mentésben
+if [ -d "$BASEDIR/print/module-naplo/templates/$RN" ]; then
+ mkdir -p $BACKUPDIR/$BACKUPFILE/print/module-naplo/templates/
+ cp -a $BASEDIR/print/module-naplo/templates/$RN $BACKUPDIR/$BACKUPFILE/print/module-naplo/templates/$RN
+ if [ $VERBOSE -gt 1 ]; then echo -e "- $RN/*"; fi
+fi
+done
if [ "$SAVELDAP" == 1 ]; then
##
# Az LDAP adatbázis
##
+ if [ $VERBOSE -gt 0 ]; then echo -e "* LDAP mentése"; fi
/etc/init.d/slapd stop
sleep 1
@@ -159,20 +267,26 @@ fi
# Becsomagolás
##
+if [ $VERBOSE -gt 0 ]; then echo -e "* Becsaomagolás"; fi
cd $BACKUPDIR
-## Ez a korábbi szerintem hibás:
-## tar cfz ${BACKUPFILE}.tgz ${DATE}
-tar cfz ${BACKUPFILE}.tgz ${BACKUPFILE}
+#### Ez a korábbi szerintem hibás:
+#### tar cfz ${BACKUPFILE}.tgz ${DATE}
+#tar cfz ${BACKUPFILE}.tgz ${BACKUPFILE} ##Ez is néha...
+
+# ez már jó
+tar -czf "$BACKUPFILE.tgz" "$BACKUPFILE/"
rm -rf $BACKUPFILE
#Debian6 inkompatibilis: tar cfz ${BACKUPFILE}.tgz --remove-files ${BACKUPFILE}
+if [ $VERBOSE -gt 0 ]; then echo -e "* Takarítás"; fi
##
# Mentés átmásolása másik szerverre
# rsync # Losonci János kiegészítése (losy@agymk.sulinet.hu)
##
if [ "$RSYNC" == 1 ]; then
- RSYNCBIN=`which rsync`
+ if [ $VERBOSE -gt 0 ]; then echo -e "* RSYNC küldés"; fi
+ RSYNCBIN=$(which rsync)
if [ "$RSYNCBIN" != "" ]; then
echo $RSYNCBIN -auvE $BACKUPDIR/ $RUSER@$RHOST:$RPATH/
$RSYNCBIN -auvE $BACKUPDIR/ $RUSER@$RHOST:$RPATH/
@@ -190,3 +304,9 @@ declare -i BDAYS=BACKUPDAYS
if [ $BDAYS -gt 0 ]; then
find $BACKUPDIR -mtime +$BDAYS -exec rm {} \;
fi
+
+###
+## Végül a lock-olás feloldása
+#
+freeup_lock
+if [ $VERBOSE -gt 0 ]; then echo -e "* Backup-script vége.\n"; fi
diff --git a/mayor/bin/lock.sh b/mayor/bin/lock.sh
new file mode 100644
index 00000000..ca275705
--- /dev/null
+++ b/mayor/bin/lock.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+help_usage() {
+cat <<EOF
+
+LOCK használata: mayor lock [options]
+
+A parancs segítségével zárolhatjuk a MaYoR rendszert, ilyenkor a webes elérés le van tiltva.
+Hasznos lehet különböző Rendszergazdai műveletek elvégzésekor.
+
+ --help: ^Ez a help szöveg.
+
+EOF
+}
+
+if [ $? -ne 0 ]; then help_usage; exit; fi
+
+while [ $# -ge 1 ]; do
+ case $1 in
+ --help | -h ) help_usage
+ exit
+ ;;
+
+ -- ) shift
+ break
+ ;;
+
+ * ) echo "HIBA: ismeretlen opció: $1"
+ exit
+ ;;
+ esac
+ shift
+done
+
+if [ ! -z $LOCKFILE ]; then
+ if [ $VERBOSE -gt 0 ]; then echo -e "* A web-es elérés letiltása:"; fi
+ if [ $VERBOSE -gt 1 ]; then echo -e "- Lock-file létrehozása... "; fi
+
+ echo "$DATE: Rendszergazda dolgozik" > $LOCKFILE
+ if [ $VERBOSE -gt 0 ]; then echo -e "kész.\n"; fi
+fi
+
diff --git a/mayor/bin/mayor b/mayor/bin/mayor
index aa46f58d..eb50ce57 100755
--- a/mayor/bin/mayor
+++ b/mayor/bin/mayor
@@ -1,20 +1,25 @@
#!/bin/bash
VERSION="2.0"
-echo -e "\nmayor szkript - verzió: $VERSION (" `date '+%Y-%m-%d'` ")\n"
+echo -e "\nmayor szkript - verzió: $VERSION (" $(date '+%Y-%m-%d') ")"
-CMDS=(backup update crypt-backup decrypt-backup remote-backup restore help)
+CMDS=(backup update lock unlock crypt-backup decrypt-backup remote-backup restore help)
MODS=(mayor-base mayor-portal mayor-naplo mayor-naplo-sni mayor-wiki mayor-felveteli mayor-installer mayor-installer-sulix mayor-jatek mayor-locales-de_DE mayor-locales-en_US mayor-local-jp_JP)
-DESC=('a rendszer mentése' 'a rendszer frissítése' 'a mentés titkosítása (ß)' 'a titkosított mentés visszakódolása (ß)' 'mentés a központi (távoli) szerverre' 'mentés visszatöltése' 'A parancs működésének leírása')
+DESC=('a rendszer mentése' 'a rendszer frissítése' 'a rendszer zárolása (lockfile)' 'a rendszer feloldása' 'a mentés titkosítása (ß)' 'a titkosított mentés visszakódolása (ß)' 'mentés a központi (távoli) szerverre' 'mentés visszatöltése' 'A parancs működésének leírása')
#OPTS=('--skip-lock')
#OPTDESC=('a rendszer zárolásának kihagyása')
-DATE=`date "+%Y%m%d"`
-DATETIME=`date "+%Y-%m-%d %H:%M:%S"`
+DATE=$(date "+%Y%m%d")
+DATETIME=$(date "+%Y-%m-%d %H:%M:%S")
print_help() {
echo -e "\nHasználat: mayor [parancs] [opciók]\n\nParancs"
for ((i=0; i<${#CMDS[@]}; i=i+1)); do
- echo " - ${CMDS[$i]}: ${DESC[$i]}"
+ len=$(echo ${CMDS[$i]} | wc -m)
+ if [ "$len" -lt 13 ]; then
+ echo -e " - ${CMDS[$i]}:\t\t${DESC[$i]}"
+ else
+ echo -e " - ${CMDS[$i]}:\t${DESC[$i]}"
+ fi
done
# echo -e "\nOpciók"
# for ((i=0; i<${#OPTS[@]}; i=i+1)); do
@@ -27,7 +32,7 @@ print_help() {
if [ -f /etc/mayor/main.conf ]; then
. /etc/mayor/main.conf
else
- echo -e "\nHIBA: hiányzó konfigurációs file: /etc/mayor/main.conf\n"
+ echo -e "\n*** HIBA: hiányzó konfigurációs file: /etc/mayor/main.conf\n"
exit 1
fi
@@ -46,9 +51,11 @@ for ((i=0; i<${#CMDS[@]}; i=i+1)); do
done
if [ -z $CMD ]; then
- echo -e "\nHIBA: ismeretlen parancs: $1\n"
+ echo -e "\n(>>> HIBA: ismeretlen parancs: $1)\n"
print_help
exit 1
+else
+ echo -e "(>>> $CMD)\n"
fi
# Alapértelmezés
@@ -59,6 +66,7 @@ fi
shift
# A parancs végrehajtása
cd $BASEDIR/bin
+cd "/home/honlap-naplo/h002/mayor/bin"
if [ -z $UPDATELOG ]; then
. ./$CMD.sh
else
diff --git a/mayor/bin/unlock.sh b/mayor/bin/unlock.sh
new file mode 100644
index 00000000..98783f4b
--- /dev/null
+++ b/mayor/bin/unlock.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+help_usage() {
+cat <<EOF
+
+LOCK használata: mayor lock [options]
+
+A parancs segítségével feloldhatjuk a MaYoR rendszert, ilyenkor a webes engedélyezésre kerül.
+Hasznos lehet különböző Rendszergazdai műveletek elvégzésekor.
+
+*** FIGYELEM! ***
+ Veszélyes lehet, ha a feloldás, a frissítés, vagy a mentés vége előtt történik!!
+
+ --help: ^Ez a help szöveg.
+
+EOF
+}
+
+if [ $? -ne 0 ]; then help_usage; exit; fi
+
+while [ $# -ge 1 ]; do
+ case $1 in
+ --help | -h ) help_usage
+ exit
+ ;;
+
+ -- ) shift
+ break
+ ;;
+
+ * ) echo "HIBA: ismeretlen opció: $1"
+ exit
+ ;;
+ esac
+ shift
+done
+
+if [ -e $LOCKFILE ]; then
+ if [ ! -z $LOCKFILE ]; then
+ if [ $VERBOSE -gt 0 ]; then echo -e "* A web-es hozzáférés engedélyezése:"; fi
+ if [ $VERBOSE -gt 1 ]; then echo -e "- A Lock-file törlése..."; fi
+
+ rm $LOCKFILE
+ if [ $VERBOSE -gt 0 ]; then echo -e "kész.\n"; fi
+ fi
+else
+ if [ $VERBOSE -gt 0 ]; then echo -e "* Már engedélyezett.\n"; fi
+fi
+
diff --git a/mayor/bin/update.sh b/mayor/bin/update.sh
index 0be82608..19585df2 100644
--- a/mayor/bin/update.sh
+++ b/mayor/bin/update.sh
@@ -117,7 +117,7 @@ if [ -z "${REV:-}" ]; then
exit 9
fi
if [ -f $REVISION_FILE ]; then
- REV=`cat $REVISION_FILE`
+ REV=$(cat $REVISION_FILE)
else
REV=0
fi
@@ -142,7 +142,7 @@ if [ "$EXECONLY" != "1" ]; then
echo -n " $MODULE... "
chmod +x $BASEDIR/bin/mayor
if [ $? != 0 ]; then exit 2; fi
- UJ_REV=`$SVN --force export https://svn.mayor.hu/svn/trunk/$MODULE/update "$BASEDIR/update" | grep revision | cut -d ' ' -f 3 | uniq | sed -e 's/\.//g'`
+ UJ_REV=$($SVN --force export https://svn.mayor.hu/svn/trunk/$MODULE/update "$BASEDIR/update" | grep revision | cut -d ' ' -f 3 | uniq | sed -e 's/\.//g')
if [ $? != 0 ]; then exit 3; fi
echo "kész."
done
@@ -168,13 +168,13 @@ if [ "$EXECONLY" != "1" ]; then
if [[ ! $HTTP_SERVER =~ .*$VERSION.* ]]; then HTTP_SERVER="$HTTP_SERVER/$VERSION"; fi
fi
if [ $? != 0 ]; then exit 5; fi
- UJ_REV=`grep Revision md5sum | cut -d ' ' -f 2`
+ UJ_REV=$(grep Revision md5sum | cut -d ' ' -f 2)
if [ "$REV" -lt "$UJ_REV" ]; then
# csomagok leszedése
for MODULE in $MODULES; do
echo -n " $MODULE... "
- MOD=`echo $MODULE | sed "s#/#-#"`
- FILE=`grep "$MOD-rev" md5sum | cut -d ' ' -f 3`
+ MOD=$(echo $MODULE | sed "s#/#-#")
+ FILE=$(grep "$MOD-rev" md5sum | cut -d ' ' -f 3)
if [ "$FILE" != '' ]; then
wget "$HTTP_SERVER/$FILE"
if [ $? != 0 ]; then
@@ -199,7 +199,7 @@ if [ "$EXECONLY" != "1" ]; then
fi
else # exec-only
if [ -f $REVISION_FILE ]; then
- UJ_REV=`cat $REVISION_FILE`
+ UJ_REV=$(cat $REVISION_FILE)
else
UJ_REV=0 # nem frissítünk semmit
fi
@@ -215,7 +215,7 @@ else
. $BASEDIR/update/processUpdateScripts.sh
fi
-PWDTEX=`pwd`
+PWDTEX=$(pwd)
echo -e "\nMaYoR TeX formátum állomány újragenerálása... "
cd $BASEDIR/print/module-naplo/tex/ && fmtutil-sys --cnffile $BASEDIR/print/module-naplo/tex/mayor.cnf --fmtdir $BASEDIR/print/module-naplo/ --byfmt mayor > /dev/null 2>&1
echo -e "\nMaYoR XeTeX formátum állomány újragenerálása... "