백업 사이트 구축 스크립트

#!/bin/bash
######################################################################
#
# https://hasu0707.duckdns.org의 백업 사이트를 구축한다.
#
######################################################################
CURRENT_DIR=`pwd -P`
SITE_URL="hasu0707.duckdns.org"
TIMESTAMP_STR1=`date "+%Y%m%d-*_backup_www-${SITE_URL}.tar.gz"`
TIMESTAMP_STR2=`date "+%Y%m%d-*_backup_db-${SITE_URL}.sql.gz"`
TMP_DIR="/tmp_work"
WEBDAV_ID="armbian"
WEBDAV_PW='myPass@12'
WEBDAV_URL="https://${SITE_URL}:5005/backup/${SITE_URL}"
DB_ROOTPW='myPass@12'
DB_NAME="hasu0707"
DB_USER="hasu0707"
DB_USERPW='myPass@12'

get_system_ip_addr() {
  echo "######################################################################"
  echo "#"
  echo "# IP주소 알아내기"
  echo "#"
  echo "######################################################################"
  SYSTEM_IP_ADDR=$(hostname -I | awk '{print $1}')
  if [ -z ${SYSTEM_IP_ADDR} ]
  then
    echo "ERROR: Unknown IP Address."
    exit 1
  fi
  echo "IP Address: ${SYSTEM_IP_ADDR}"
}

mysql_root_login_test() {
  echo "######################################################################"
  echo "#"
  echo "# mysql root 계정 로그인 테스트"
  echo "#"
  echo "######################################################################"
  mysql -uroot -p${DB_ROOTPW} -e "exit"
  if [ $? -ne 0 ];
  then
    echo "mysql root 비밀번호가 이 스크립트와 맞지 않습니다. 아래와 같은 방법으로 변경해 주세요."
    echo "ex) mysqladmin -u root -p password 'P@ss1234'"
    exit 1
  fi
}

download_backup() {
  echo "######################################################################"
  echo "#"
  echo "# 데이터 다운로드"
  echo "#"
  echo "######################################################################"

  # 임시 디렉토리 초기화
  rm -rf ${TMP_DIR}
  mkdir ${TMP_DIR}

  wget -P ${TMP_DIR} --no-check-certificate --user ${WEBDAV_ID} --password ${WEBDAV_PW} -r -A "${TIMESTAMP_STR1}" "${WEBDAV_URL}"
  if [ $? -ne 0 ];
  then
    echo "Failed to download-www"
    exit 1
  fi

  wget -P ${TMP_DIR} --no-check-certificate --user ${WEBDAV_ID} --password ${WEBDAV_PW} -r -A "${TIMESTAMP_STR2}" "${WEBDAV_URL}"
  if [ $? -ne 0 ];
  then
    echo "Failed to download-db"
    exit 1
  fi

  mv ${TMP_DIR}/${SITE_URL}:5005/backup/${SITE_URL}/*.gz ${TMP_DIR}
  rm -rf ${TMP_DIR}/${SITE_URL}:5005
  sync
}

uncompress_backup() {
  echo "######################################################################"
  echo "#"
  echo "# 압축 해제"
  echo "#"
  echo "######################################################################"

  mkdir ${TMP_DIR}/1
  mkdir ${TMP_DIR}/2
  tar -C ${TMP_DIR}/1 -xzf ${TMP_DIR}/*.tar.gz
  gzip -d ${TMP_DIR}/*.sql.gz
  mv ${TMP_DIR}/*.sql ${TMP_DIR}/2
  rm -f ${TMP_DIR}/*.tar.gz
}

install_www() {
  echo "######################################################################"
  echo "#"
  echo "# /var/www 설치"
  echo "#"
  echo "######################################################################"

  rm -rf /var/www
  mv ${TMP_DIR}/1/var/www /var
  chown -R armbian:armbian /var/www
}

change_hostname() {
  echo "######################################################################"
  echo "#"
  echo "# 호스트 명 변경"
  echo "#"
  echo "######################################################################"
  sed -i "s/${SITE_URL}/${SYSTEM_IP_ADDR}/g" /var/www/index.html
}

install_db() {
  echo "######################################################################"
  echo "#"
  echo "# DB 설치"
  echo "#"
  echo "######################################################################"

  # 기존 DB 삭제
  echo "DROP DATABASE IF EXISTS ${DB_NAME};" > /tmp/tmp.sql
  echo "DROP USER IF EXISTS '${DB_USER}'@'localhost';" >> /tmp/tmp.sql
  echo "DROP USER IF EXISTS '${DB_USER}'@'%'" >> /tmp/tmp.sql
  mysql -uroot -p${DB_ROOTPW} < /tmp/tmp.sql

  # DB 생성
  echo "CREATE DATABASE ${DB_NAME} CHARACTER SET utf8mb4;" > /tmp/tmp.sql
  echo "GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_USERPW}';" >> /tmp/tmp.sql
  mysql -uroot -p${DB_ROOTPW} < /tmp/tmp.sql

  # DB dump 밀어넣기
  mysql -uroot -p${DB_ROOTPW} ${DB_NAME} < ${TMP_DIR}/2/*.sql
  rm -f /tmp/tmp.sql
}

clean_data() {
  echo "######################################################################"
  echo "#"
  echo "# 임시파일 삭제"
  echo "#"
  echo "######################################################################"
  rm -rf ${TMP_DIR}
}

get_system_ip_addr
mysql_root_login_test
download_backup
uncompress_backup
install_www
change_hostname
install_db
clean_data
위로 스크롤