Главная > General > Пара нужных скриптов

Пара нужных скриптов

Как известно, все линуксойды очень ленивы и не любят выполнять одни и теже  действия по несколько раз, лучше заняться более интересными вещами, к примеру, наложить десяток патчей на ядро и посмотреть насколько все стало хуже. Для обновления, бекапа или восстановления wordpress и mediawiki я использую пару скриптов. Решил выложить, вдруг кому пригодится. Для более наглядного представления все это дело оформил в wiki. Для mediawiki смотреть тут, для wordpress тут. Ну и под катом все это безобразие в куче.

Для MediaWiki:

#!/bin/bash

WIKIPATH="/www/wiki"
BACKUPPATH="/root/backup"
MYSQLUSER="user"
MYSQLHOST="localhost"
WIKIDB="wikidb"

mediawiki=$1
if [ -z $mediawiki ]
  then
    echo -e " Введите название архива с wiki для обновления\n\
   \e[0;34mbackup\\e[0m или \e[0;34m -b \\e[0m для архивации всех файлов и базы данных wiki\n\
   \e[0;34mextensions\\e[0m или \e[0;34m -e \\e[0m для обновления плагинов\n\
   \e[0;34mrestorewiki \\e[0m или \e[0;34m -w \\e[0m для восстановления wiki из бекапа\n\
   \e[0;34mrestoredb \\e[0m или \e[0;34m -d \\e[0m для восстановления базы данных wiki из бекапа"

    exit 1

elif [ `id -u` != 0 ]
  then
    echo Вы не root
    exit 1
fi

dir=`pwd`

case $mediawiki in

  backup | -b)
    echo "start backup datebase. Wait..."
    nice -n 19 mysqldump -h $MYSQLHOST -u $MYSQLUSER -p $WIKIDB -c |\
    nice -n 19 /bin/gzip -9 > $BACKUPPATH/wiki-wikidb-$(date '+%Y%m%d').sql.gz
    echo "backup of database completed"

    echo "start backup wiki folder. Wait..."
    nice -n 19 tar -czf $BACKUPPATH/aidalinux-wiki-$(date '+%Y%m%d').tar.gz $WIKIPATH
    echo "backup wiki completed"
    exit 0
    ;;
  extensions | -e)
    for extensions in `ls $WIKIPATH/extensions`
      do
        cd $WIKIPATH/extensions/"$extensions"
        svn update
        cd ..
    done
    exit 0
  ;;
  restorewiki | -w)

    [[ -z "$2" ]] && echo "Введите назазвание бекапа с wiki" && exit 1
    backup_wiki="$2"
    echo "restore wiki files"
    tar xzvf "$backup_wiki" -C $WIKIPATH --strip-components=1
    echo "done"
    exit 0
  ;;
  restoredb | -d)

    [[ -z "$2" ]] && echo "Введите название бекапа базы данных wiki" && exit 1
    wiki_wikidb="$2"
    echo "restore datebase"
    gunzip -c "$wiki_wikidb" | mysql -h $MYSQLHOST -u $MYSQLUSER -p $WIKIDB
    echo "done"
    exit 0
  ;;
esac

#Определение расширения архива с mediawiki
arch=`echo $mediawiki | awk -F. '{ print $NF}'`

if [ "$arch" = gz ]
  then
    echo "start update mediawiki"
else
    echo "Вы ошиблись в вводе аргумента"
    exit 1
fi

cd "$dir"

#update mediawiki
tar xzf $mediawiki -C $WIKIPATH --strip-components=1

echo "update database"
php $WIKIPATH/maintenance/update.php
echo "is all!!"

Для WordPress:

#!/bin/bash
#вставьте свои значения
path="/www/youpath" #Путь до wordpress
BACKUPPATH="/root/backup" #Куда бекапим
MYSQLUSER="user" #mysql юзер
MYSQLHOST="localhost" #хост mysql
WORDPRESSDB="wordpressdb" #база данных wordpress

arg="$1"

if [ -z "$arg" ]
  then
    echo -e "Введите:
    \e[0;34mupgrade\\e[0m или \e[0;34m -u \\e[0m для обновления\n\
   \e[0;34mbackup\\e[0m или \e[0;34m -b \\e[0m для архивации всех файлов и базы данных wordpress\n\
   \e[0;34mextensions\\e[0m или \e[0;34m -e \\e[0m для обновления плагинов\n\
   \e[0;34mrestorewordpress \\e[0m или \e[0;34m -w \\e[0m для восстановления wordpress из бекапа\n\
   \e[0;34mrestoredb \\e[0m или \e[0;34m -d \\e[0m для восстановления базы данных wordpress из бекапа"

    exit 1

elif [ `id -u` != 0 ]
  then
    echo "Вы не root"
    exit 1
fi

case $arg in
  backup | -b)
    echo "start backup datebase. Wait..."
    nice -n 19 mysqldump -h $MYSQLHOST -u $MYSQLUSER -p $WORDPRESSDB -c |\
    nice -n 19 /bin/gzip -9 > $BACKUPPATH/wordpress-db-$(date '+%Y%m%d').sql.gz
    echo "backup of database completed"

    echo "start backup wordpress folder. Wait..."
    # Для исключения файла или каталога используйте --exclude="./youdir"
    # точка обязательна и не ставить слэш в конце имени директории
    cd $path; nice -n 19 tar -cvzf $BACKUPPATH/wordpress-$(date '+%Y%m%d').tar.gz . --exclude="./wiki" --  exclude="./upload"
    echo "backup wordpress completed"
    exit 0
  ;;
  restorewordpress | -w)

    [[ -z "$2" ]] && echo "Введите назазвание бекапа с wordpress" && exit 1
    backup_wordpress="$2"
    echo "restore wordpress files"
    tar xzvf "$backup_wordpress" -C $path --strip-components=1
    echo "done"
    exit 0
  ;;
  restoredb | -d)

    [[ -z "$2" ]] && echo "Введите название бекапа базы данных wordpress" && exit 1
    wordpress_db="$2"
    echo "restore database"
    gunzip -c "$wordpress_db" | mysql -h $MYSQLHOST -u $MYSQLUSER -p $WORDPRESSDB
    echo "done"
    exit 0
  ;;
  upgrade | -u)
    wordpress="$2"
    arch=`echo "$wordpress" | awk -F. '{ print $NF}'`
    if [ "$arch" = "zip" -o "$arch" = "gz" ]
      then
        echo "prepare to upgrade"
        [ -d $path/upload/ ] || mkdir $path/upload/
        cp -v -R $path/wp-content/ $path/wp-config.php $path/.htaccess $path/upload/
        rm $path/wp*.php $path/license.txt $path/readme.html $path/xmlrpc.php
        rm -rf $path/wp-admin/ $path/wp-includes/
        cp $path/upload/wp-config.php $path
        echo "update wordpress"

        if [ $arch = zip ]
          then
            unzip -o $wordpress -d $path
        elif [ $arch = gz ]
          then
            tar xzf $wordpress -C $path --strip-components=1
        else
          exit 1
        fi

        cp -rf $path/upload/* $path
        rm -rf $path/upload

        echo "====================================================================================="
        echo "==== For update database you need open /wp-admin/upgrade.php in browser ===="
        echo "====================================================================================="
    else
      echo "Неизвестный тип архива, автоопределение работает только для zip и tar.gz"
        exit 1
    fi
esac
echo "is all!!"
exit 0
Categories: General Tags: , , , ,
  1. Пока что нет комментариев.

What is 7 + 7 ?
Please leave these two fields as-is:
Чтобы продолжить вы должны решить простое уравнение (так мы узнаем, что вы человек) :-)