sh 从备份中简单还原cms db
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh 从备份中简单还原cms db相关的知识,希望对你有一定的参考价值。
#!/bin/sh
echo " -- Restore CMS DB // JoomlaWordpress."
#var list: backup dir, site doc_root, conf dir, cur dir
restorepath="`realpath $1`"
sitepath="`realpath $2`"
joomname="$sitepath/configuration.php"
wpname="$sitepath/wp-config.php"
#error syntax
syntax() {
echo " ** cms_dbrestore <путь_до_директории_бекапа> <путь_до_корневой_директории_сайта>" >&2
}
#define CMS:
detect() {
if [ -f "$joomname" ]; then
cms="joomla"
else
if [ -f "$wpname" ]; then
cms="wordpress"
else
cms="not_found"
fi
fi
}
#parsing CMS Joomla config
jparse () {
DB_NAME=`php -r 'include("configuration.php"); $j = new JConfig; echo $j->db;'` || return 1
DB_USER=`php -r 'include("configuration.php"); $j = new JConfig; echo $j->user;'`
DB_PASSWORD=`php -r 'include("configuration.php"); $j = new JConfig; echo $j->password;'`
echo " -- $DB_NAME $DB_USER $DB_PASSWORD"
}
#parsing CMS WordPress config
wparse () {
DB_NAME=`php -r 'include("wp-config.php"); echo DB_NAME;'` || return 1
DB_USER=`php -r 'include("wp-config.php"); echo DB_USER;'`
DB_PASSWORD=`php -r 'include("wp-config.php"); echo DB_PASSWORD;'`
echo " -- $DB_NAME $DB_USER $DB_PASSWORD"
}
#backup current db
curdump () {
now=`date '+%d.%m.%g-%X'`;
dumpdir="$HOME/backups/pre/$now/db"
mkdir -p "$dumpdir"
dumpname="$dumpdir/$DB_NAME.sql"
mysqldump -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" > "$dumpname" || return 1
gzip "$dumpname"
echo " -- Дамп текущей базы данных сохранен по пути: $dumpname"
}
#clear cur db
cleardb () {
echo " -- Стираю содержимое базы."
MYSQL_RESULT=`mysql -e 'drop database '"$DB_NAME" -u "$DB_USER" --password="$DB_PASSWORD"` || return 1
MYSQL_RESULT=`mysql -e 'create database '"$DB_NAME" -u $DB_USER --password="$DB_PASSWORD"` || return 1
}
#restore DB from backup
restoredb () {
echo " -- Перехожу в директорию с бекапом таблиц."
cd "$restorepath"
for i in *.sql.gz ; do gzcat "$i" ; done | mysql -u "$DB_USER" --password="$DB_PASSWORD" "$DB_NAME" || return 1
}
#checking exist of args paths
if [ ! -e "$restorepath" ];
then
syntax
exit 1
fi
if [ ! -e "$sitepath" ]; then
syntax
exit 1
fi
#main script
#detect CMS
detect
echo " -- Определение CMS: $cms"
#переходим в директорию сайта для того, чтобы парсить данные
cd "$sitepath"
echo " -- Определяем параметры подключения к базе данных."
case "$cms" in
"joomla")
jparse
;;
"wordpress")
wparse
;;
*)
echo " !! Не удалось определить CMS." >&2
exit 1
;;
esac
#if *sql.gz exist in backup dir
if !(ls "$restorepath" | grep -qm 1 ".sql.gz") ; then
echo " !! Не удалось найти файлы *.sql.gz" >&2
exit 1
fi
#dumping cur db
curdump || {
echo " !! Не удалось создать дамп текущей базы данных." >&2
exit 1
}
#clear cur db
cleardb || {
echo " !! Не удалось очистить базу данных." >&2
exit 1
}
#change dir
restoredb || {
echo " !! Не удалось выполнить восстановление базы данных." >&2
exit 1
}
echo " -- Восстановление завершено. Проверьте, пожалуйста."
以上是关于sh 从备份中简单还原cms db的主要内容,如果未能解决你的问题,请参考以下文章
迁移MSSql Db - 来自SQL Server 2008 R2 Enterprise备份可以在SQL Server 2008 R2 Express版本中还原