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

Материал из Ай да Linux Wiki
Перейти к навигации Перейти к поиску
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Представлен скрипт для создания резервных копий, восстановления и обновления 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