Пара нужных скриптов
Как известно, все линуксойды очень ленивы и не любят выполнять одни и теже действия по несколько раз, лучше заняться более интересными вещами, к примеру, наложить десяток патчей на ядро и посмотреть насколько все стало хуже. Для обновления, бекапа или восстановления 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!!"
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
#вставьте свои значения
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
Новые комментарии