Cкрипт полной конвертации форума в UTF8 с одновременным переносом на новый домен, подготовка к апгрейду до 3.0
Возможно кому-то понадобится... На выходе получаем сконвертированную в UTF8 IB2. Конвертится не только база, но и файлы. После этого можно смело апгрейдить до 3.0.
В начале скрипта находится конфигурационная секция.
#!/bin/bash -x
# --- CONFIG ---
DUMP_DIR="/var/www/vhosts/olddomain.ru/_db"
SRC_DIR="/var/www/vhosts/olddomain.ru/httpdocs"
SRC_DB_NAME="исх_БД_имя_базы"
SRC_DB_USER="исх_БД_пользователь"
SRC_DB_PASS="исх_БД_пароль"
SRC_DOMAIN="www.olddomain.ru"
DEST_DIR="/var/www/vhosts/newdomain.ru/httpdocs"
DEST_DB_NAME="нов_БД_имя_базы"
DEST_DB_USER="нов_БД_пользователь"
DEST_DB_PASS="нов_БД_пароль"
DEST_DOMAIN="www.newdomain.ru"
#Apache user and group
SITE_USER="нов_имя пользователя_сайта"
SITE_GROUP="нов_группа_сайта"
SCP="windows-1251" # codepage for 'iconv'
EXT=".*\.(htm[l]*|php[3]*|js|css|sql)$" #files extensions for coding
FCS="windows-1251" # charset for replace
DCP="UTF-8" # codepage for 'iconv'
TCS="UTF-8" # new charset
SRC_DIR_cp1251=$DEST_DIR"_cp1251/"
# --- END CONFIG ---
cd $DUMP_DIR
echo Backuping DB "SRC_DB_NAME"...
mysqldump -u$SRC_DB_USER -p$SRC_DB_PASS --default-character-set=utf8 --skip-add-drop-database --compact -e --skip-set-charset $SRC_DB_NAME >$SRC_DB_NAME.sql
echo Converting dump to UTF8...
cp --reply=yes $SRC_DB_NAME.sql $DEST_DB_NAME.sql
perl -pi -e 's/cp1251/utf8/g' $DEST_DB_NAME.sql
perl -pi -e 's/$SRC_DOMAIN/$DEST_DOMAIN/g' $DEST_DB_NAME.sql
echo Cleaning DB "$DEST_DB_NAME"...
mysql -u$DEST_DB_USER -p$DEST_DB_PASS --execute="DROP DATABASE $DEST_DB_NAME; CREATE DATABASE $DEST_DB_NAME CHARACTER SET utf8 COLLATE utf8_general_ci;"
echo Restoring dump to DB "$DEST_DB_NAME"...
mysql -u$DEST_DB_USER -p$DEST_DB_PASS --default-character-set=utf8 -f $DEST_DB_NAME < $DEST_DB_NAME.sql
echo Changing directory to "$DEST_DIR"...
cd $DEST_DIR
echo Cleaning destination folder...
rm -f -R $DEST_DIR/*
echo Copying source to destination...
cp -R -p $SRC_DIR/* $DEST_DIR/
echo Converting configs...
perl -pi -e 's/cp1251/utf8/g' conf_global.php
perl -pi -e 's/$SRC_DOMAIN/$DEST_DOMAIN/g' conf_global.php
perl -pi -e 's/$SRC_DB_NAME/$DEST_DB_NAME/g' conf_global.php
perl -pi -e 's/$SRC_DB_USER/$DEST_DB_USER/g' conf_global.php
perl -pi -e 's/$SRC_DB_PASS/$DEST_DB_PASS/g' conf_global.php
DEST_DIR=$DEST_DIR"/"
# Make new copy
echo Backuping Windows-1251 encoded files...
mkdir $SRC_DIR_cp1251
find $DEST_DIR -type d | sed "s#$DEST_DIR##" | xargs -i mkdir $SRC_DIR_cp1251{}
find $DEST_DIR -type f | grep -E "$EXT" | sed "s#$DEST_DIR##" | xargs -i cp -p $DEST_DIR{} $SRC_DIR_cp1251{}
# --- Converting files to UTF8...
echo Converting files to UTF8...
find $DEST_DIR -type f | grep -E "$EXT" | xargs -i echo {} | \
while read f
do
iconv -c -f $SCP -t $DCP -o "$f.tmp""$f"
mv -f "$f.tmp""$f"
# Replace strings
perl -pi -e "s#content\s*\=\s*[\"'].*?charset\s*=\s*$FCS.*?[\"']#content=\"text/html; charset=$TCS\"#g""$f"
done
echo Fixing permissions...
chown -R $SITE_USER:$SITE_GROUP $DEST_DIR/*
chown -R $SITE_USER:$SITE_GROUP $DEST_DIR/.ht*
chmod 777 install/installfiles cache cache/lang_cache cache/skin_cache uploads style_images conf_global.php cache/lang_cache/1 public/style_images public/style_css hooks
Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.
Вопрос
StormRider
Cкрипт полной конвертации форума в UTF8 с одновременным переносом на новый домен, подготовка к апгрейду до 3.0
Возможно кому-то понадобится... На выходе получаем сконвертированную в UTF8 IB2. Конвертится не только база, но и файлы. После этого можно смело апгрейдить до 3.0.
В начале скрипта находится конфигурационная секция.
Ссылка на комментарий
Поделиться на других сайтах
24 ответа на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.