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.
В начале скрипта находится конфигурационная секция.
#!/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Ссылка на комментарий
Поделиться на других сайтах
24 ответа на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.