#!/bin/bash OPT_SPEC="hf:d::" LONG_OPT_SPEC="help,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" help_usage() { cat < /dev/null 2>&1 if [ $? -ne 0 ]; then echo "Nem sikerült a ${BACKUPDIR} könyvtárat létrehozni!" echo "MaYoR Backup failure!" exit 1 fi fi 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" exit 1 fi mkdir $BACKUPDIR/$BACKUPFILE chown $WEB_SERVER_USER $BACKUPDIR/$BACKUPFILE chmod 700 $BACKUPDIR/$BACKUPFILE ## # mysql adatbázis mentése ## if [ "$MYSQL_HOST" == "" ]; then MYSQL_HOST="localhost" fi if [ -f $MYSQL ]; then DATABASES='' for DB in `echo 'SHOW DATABASES' | mysql -h$MYSQL_HOST -p$MYSQL_PW -u$MYSQL_USER`; do if [[ ! $EXCLUDED_DBS =~ .*$DB.* ]] && { [[ $DB =~ ^mayor.* ]] || [[ $DB =~ ^naplo.* ]] || [[ $DB =~ ^intezmeny.* ]]; } then DATABASES="$DATABASES $DB" fi done else echo -e "\n\nERROR: A mysql kliens nem található: $MYSQL\n" exit 2 fi for DATABASE in $DATABASES; do mysqldump -R -h$MYSQL_HOST -p$MYSQL_PW -u$MYSQL_USER $DATABASE >> $BACKUPDIR/$BACKUPFILE/$DATABASE.sql done ## # A honlap mentése ## mkdir $BACKUPDIR/$BACKUPFILE/log cp -a $BASEDIR/log/revision $BACKUPDIR/$BACKUPFILE/log/revision cp -a $BASEDIR/www $BACKUPDIR/$BACKUPFILE/www cp -a $BASEDIR/config $BACKUPDIR/$BACKUPFILE/config if [ "$SAVELDAP" == 1 ]; then ## # Az LDAP adatbázis ## /etc/init.d/slapd stop sleep 1 slapcat -b $BASEDN -l $BACKUPDIR/$BACKUPFILE/ldap.ldif cp -a $LDAPDBDIR $BACKUPDIR/$BACKUPFILE/ldap /etc/init.d/slapd start ## # LDAP konfig file-ok mentése (schema) ## mkdir $BACKUPDIR/$BACKUPFILE/etc cp -a $LDAPCONFDIR $BACKUPDIR/$BACKUPFILE/etc/ fi ## # Becsomagolás ## cd $BACKUPDIR ## Ez a korábbi szerintem hibás: ## tar cfz ${BACKUPFILE}.tgz ${DATE} tar cfz ${BACKUPFILE}.tgz ${BACKUPFILE} rm -rf $BACKUPFILE #Debian6 inkompatibilis: tar cfz ${BACKUPFILE}.tgz --remove-files ${BACKUPFILE} ## # 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 [ "$RSYNCBIN" != "" ]; then echo $RSYNCBIN -auvE $BACKUPDIR/ $RUSER@$RHOST:$RPATH/ $RSYNCBIN -auvE $BACKUPDIR/ $RUSER@$RHOST:$RPATH/ if [ $? -ne 0 ]; then echo "rsync error!" fi fi fi ## # Elavult mentés törlése ## declare -i BDAYS=BACKUPDAYS if [ $BDAYS -gt 0 ]; then find $BACKUPDIR -mtime +$BDAYS -exec rm {} \; fi