Резервное копирование и восстановление wordpress

Материал из Ай да Linux Wiki
Перейти к навигации Перейти к поиску

Представлен скрипт для создания резервных копий, восстановления и обновления 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 <name>\\e[0m или \e[0;34m -w <name>\\e[0m для восстановления wordpress из бекапа\n\
        \e[0;34mrestoredb <name>\\e[0m или \e[0;34m -d <name>\\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 <yousite>/wp-admin/upgrade.php in browser ===="
                                echo "====================================================================================="
                        else
                                echo "Неизвестный тип архива, автоопределение работает только для zip и tar.gz"
                                exit 1

                fi
esac

echo "is all!!"

exit 0