#!/bin/bash

# Copyright (C) 2017 Study For Us HOSTING (https://hosting.studyforus.com)
# The Site Mirroring Tool (For RHYMIX)
# Version information : 0.1 (Proto type)
# License : The MIT License (MIT)

#기존 서버 백업 변수 설정
ORIGIN_HOST='ORIGIN_server_host'						# 원본 서버 호스트
ORIGIN_DB_HOST='db_host'								# 원본 DB 호스트
ORIGIN_DB_NAME='db_name'								# 원본 DB명
ORIGIN_DB_USER='db_user_name'							# 원본 DB 유저명
ORIGIN_DB_PASSWD='db_user_password'						# 원본 DB 유저 암호
ORIGIN_WEB_DIR='absolute_file_path'						# 절대 경로로 입력
ORIGIN_USER='user_name'									# SSH 또는 FTP 유저명
ORIGIN_DOMAIN='www.domain.com'							# 원본 도메인 주소
DB_PREFIX='rx_'											# DB 접두사 입력 (기본 rx_ / 또는 xe_)

#미러링 서버 백업 변수 설정
MIRROR_HOST='hostname'									# 복사할 서버 호스트
MIRROR_DB_HOST='127.0.0.1'								# 복사할 서버 DB 호스트
MIRROR_DB_NAME='new_db_name'							# 복사할 DB 이름
MIRROR_DB_USER='new_db_user'							# 복사할 DB 유저명
MIRROR_DB_PASSWD='new_db_password'						# 복사할 DB 암호
MIRROR_WEB_DIR='new_web_path'							# 복사할 웹 디렉터리 (가급적 절대경로로)
MIRROR_DOMAIN='www.mirror.com'							# 복사할 도메인 주소


# 웹 디렉터리로 이동
echo "Move to new web diretory."
cd $MIRROR_WEB_DIR

# 기존 서버의 DB 복사 > 새 서버의 웹 폴더로 복사 
echo "Dumping DB to new web directory."
mysqldump -h$ORIGIN_DB_HOST -u$ORIGIN_DB_USER --password=$ORIGIN_DB_PASSWD  --single-transaction $ORIGIN_DB_NAME > $ORIGIN_DB_NAME.sql
echo ""
echo "done."
echo ""
echo ""

# 기존 DB를 새 DB로 덤프
echo "Restore DB to new site."
mysql -h$MIRROR_DB_HOST -u$MIRROR_DB_USER --password=$MIRROR_DB_PASSWD  $MIRROR_DB_NAME < $ORIGIN_DB_NAME.sql
echo ""
echo "done."
echo ""
echo ""


# 기존 DB 파일 삭제
echo "Removing DB backup file."
rm $ORIGIN_DB_NAME.sql
echo ""
echo "done."
echo ""
echo ""

# 기존 웹 파일 복사 rsync 이용
echo "Coping web files to new site web directory."
rsync -azh --delete --exclude=files/cache --exclude=files/supercache $ORIGIN_USER@$ORIGIN_HOST:$ORIGIN_WEB_DIR/ $MIRROR_WEB_DIR/
#rsync -azh --delete $ORIGIN_USER@$ORIGIN_HOST:$ORIGIN_WEB_DIR/ $MIRROR_WEB_DIR/
echo ""
echo "done."
echo ""
echo ""

# config.php 파일 백업
echo "Back up config file."
cp files/config/config.php files/config/config.php.bak
echo ""
echo "done."
echo ""
echo ""

# config.php에서 db 정보 수정
echo "Changing DB information in config.php file"
sed -i "s/$ORIGIN_DB_NAME/$MIRROR_DB_NAME/g" $MIRROR_WEB_DIR/files/config/config.php
echo "DB name changed."
sed -i "s/$ORIGIN_DB_USER/$MIRROR_DB_USER/g" $MIRROR_WEB_DIR/files/config/config.php
echo "DB user name changed"
sed -i "s/$ORIGIN_DB_PASSWD/$MIRROR_DB_PASSWD/g" $MIRROR_WEB_DIR/files/config/config.php
echo "DB password changed."
echo ""
echo "All DB information changed."
echo ""
echo ""

# 기존 웹 파일의 config 정보 수정 (Rhymix 업데이트로 인해, 데이터 베이스를 직접 수정해야 함.)
echo "Changing site domain information to information in DB."
mysql -h$MIRROR_DB_HOST -u$MIRROR_DB_USER -p$MIRROR_DB_PASSWD $MIRROR_DB_NAME -e "UPDATE ${DB_PREFIX}domains SET domain = \"${MIRROR_DOMAIN}\" WHERE domain = \"${ORIGIN_DOMAIN}\";"
mysql -h$MIRROR_DB_HOST -u$MIRROR_DB_USER -p$MIRROR_DB_PASSWD $MIRROR_DB_NAME -e "UPDATE ${DB_PREFIX}sites SET domain = \"${MIRROR_DOMAIN}\" WHERE domain = \"${ORIGIN_DOMAIN}\";"
echo ""
echo "done."
echo ""
echo "Site migration(mirroring) complete."