Browse Source

Add UPYUN backup

lj2007331@gmail.com 7 years ago
parent
commit
5eb676b7b4
4 changed files with 104 additions and 52 deletions
  1. 54 32
      backup.sh
  2. 48 18
      backup_setup.sh
  3. 1 1
      include/apache-2.4.sh
  4. 1 1
      versions.txt

+ 54 - 32
backup.sh

@@ -43,6 +43,17 @@ DB_COS_BK() {
   done
 }
 
+DB_UPYUN_BK() {
+  for D in `echo $db_name | tr ',' ' '`
+  do
+    ./db_bk.sh $D
+    DB_GREP="DB_${D}_`date +%Y`"
+    DB_FILE=`ls -lrt $backup_dir | grep ${DB_GREP} | tail -1 | awk '{print $NF}'`
+    /usr/local/bin/upx put $backup_dir/$DB_FILE /`date +%F`/$DB_FILE
+    [ $? -eq 0 ] && /usr/local/bin/upx rm -d `date +%F --date="$expired_days days ago"` > /dev/null 2>&1
+  done
+}
+
 WEB_Local_BK() {
   for W in `echo $website_name | tr ',' ' '`
   do
@@ -76,38 +87,49 @@ WEB_COS_BK() {
       popd
     fi
     ${python_install_dir}/bin/coscmd upload $PUSH_FILE /`date +%F`/Web_${W}_$(date +%Y%m%d_%H).tgz
-    [ $? -eq 0 ] && { [ -e "$PUSH_FILE" -a "$backup_destination" != 'local,cos' ] && rm -rf $PUSH_FILE; ${python_install_dir}/bin/coscmd delete -r -f `date +%F --date="$expired_days days ago"` > /dev/null 2>&1; }
+    if [ $? -eq 0 ]; then
+      ${python_install_dir}/bin/coscmd delete -r -f `date +%F --date="$expired_days days ago"` > /dev/null 2>&1
+      [ -e "$PUSH_FILE" -a -z "`echo $backup_destination | grep -ow 'local'`" ] && rm -rf $PUSH_FILE
+    fi
+  done
+}
+
+WEB_UPYUN_BK() {
+  for W in `echo $website_name | tr ',' ' '`
+  do
+    [ ! -e "$wwwroot_dir/$WebSite" ] && { echo "[$wwwroot_dir/$WebSite] not exist"; break; }
+    PUSH_FILE="$backup_dir/Web_${W}_$(date +%Y%m%d_%H).tgz"
+    if [ ! -e "$PUSH_FILE" ]; then
+      pushd $wwwroot_dir
+      tar czf $PUSH_FILE ./$W
+      popd
+    fi
+    /usr/local/bin/upx put $PUSH_FILE /`date +%F`/Web_${W}_$(date +%Y%m%d_%H).tgz
+    if [ $? -eq 0 ]; then
+      /usr/local/bin/upx rm -d `date +%F --date="$expired_days days ago"` > /dev/null 2>&1 
+      [ -e "$PUSH_FILE" -a -z "`echo $backup_destination | grep -ow 'local'`" ] && rm -rf $PUSH_FILE
+    fi
   done
 }
 
-if [ "$backup_destination" == 'local' ]; then
-  [ -n "`echo $backup_content | grep -ow db`" ] && DB_Local_BK
-  [ -n "`echo $backup_content | grep -ow web`" ] && WEB_Local_BK
-elif [ "$backup_destination" == 'remote' ]; then
-  echo "com:::[ ! -e "$backup_dir" ] && mkdir -p $backup_dir" > config_bakcup.txt
-  [ -n "`echo $backup_content | grep -ow db`" ] && DB_Remote_BK
-  [ -n "`echo $backup_content | grep -ow web`" ] && WEB_Remote_BK
-  ./mabs.sh -c config_bakcup.txt -T -1 | tee mabs.log
-elif [ "$backup_destination" == 'cos' ]; then
-  [ -n "`echo $backup_content | grep -ow db`" ] && DB_COS_BK
-  [ -n "`echo $backup_content | grep -ow web`" ] && WEB_COS_BK
-elif [ "$backup_destination" == 'local,remote' ]; then
-  echo "com:::[ ! -e "$backup_dir" ] && mkdir -p $backup_dir" > config_bakcup.txt
-  [ -n "`echo $backup_content | grep -ow db`" ] && DB_Local_BK
-  [ -n "`echo $backup_content | grep -ow web`" ] && WEB_Local_BK
-  [ -n "`echo $backup_content | grep -ow db`" ] && DB_Remote_BK
-  [ -n "`echo $backup_content | grep -ow web`" ] && WEB_Remote_BK
-  ./mabs.sh -c config_bakcup.txt -T -1 | tee mabs.log	
-elif [ "$backup_destination" == 'local,cos' ]; then
-  [ -n "`echo $backup_content | grep -ow db`" ] && DB_Local_BK
-  [ -n "`echo $backup_content | grep -ow db`" ] && DB_COS_BK
-  [ -n "`echo $backup_content | grep -ow web`" ] && WEB_Local_BK
-  [ -n "`echo $backup_content | grep -ow web`" ] && WEB_COS_BK
-elif [ "$backup_destination" == 'remote,cos' ]; then
-  echo "com:::[ ! -e "$backup_dir" ] && mkdir -p $backup_dir" > config_bakcup.txt
-  [ -n "`echo $backup_content | grep -ow db`" ] && DB_Remote_BK 
-  [ -n "`echo $backup_content | grep -ow db`" ] && DB_COS_BK
-  [ -n "`echo $backup_content | grep -ow web`" ] && WEB_Remote_BK 
-  [ -n "`echo $backup_content | grep -ow web`" ] && WEB_COS_BK
-  ./mabs.sh -c config_bakcup.txt -T -1 | tee mabs.log	
-fi
+for DEST in `echo $backup_destination | tr ',' ' '`
+do
+  if [ "$DEST" == 'local' ]; then
+    [ -n "`echo $backup_content | grep -ow db`" ] && DB_Local_BK
+    [ -n "`echo $backup_content | grep -ow web`" ] && WEB_Local_BK
+  fi 
+  if [ "$DEST" == 'remote' ]; then
+    echo "com:::[ ! -e "$backup_dir" ] && mkdir -p $backup_dir" > config_bakcup.txt
+    [ -n "`echo $backup_content | grep -ow db`" ] && DB_Remote_BK
+    [ -n "`echo $backup_content | grep -ow web`" ] && WEB_Remote_BK
+    ./mabs.sh -c config_bakcup.txt -T -1 | tee mabs.log
+  fi 
+  if [ "$DEST" == 'cos' ]; then
+    [ -n "`echo $backup_content | grep -ow db`" ] && DB_COS_BK
+    [ -n "`echo $backup_content | grep -ow web`" ] && WEB_COS_BK
+  fi 
+  if [ "$DEST" == 'upyun' ]; then
+    [ -n "`echo $backup_content | grep -ow db`" ] && DB_UPYUN_BK
+    [ -n "`echo $backup_content | grep -ow web`" ] && WEB_UPYUN_BK
+  fi 
+done

+ 48 - 18
backup_setup.sh

@@ -23,6 +23,7 @@ sed -i "s@^oneinstack_dir.*@oneinstack_dir=$(pwd)@" ./options.conf
 . ./options.conf
 . ./versions.txt
 . ./include/color.sh
+. ./include/check_os.sh
 . ./include/check_dir.sh
 . ./include/download.sh
 . ./include/python.sh
@@ -32,27 +33,25 @@ sed -i "s@^oneinstack_dir.*@oneinstack_dir=$(pwd)@" ./options.conf
 
 while :; do echo
   echo 'Please select your backup destination:'
-  echo -e "\t${CMSG}1${CEND}. Only Localhost"
-  echo -e "\t${CMSG}2${CEND}. Only Remote host"
-  echo -e "\t${CMSG}3${CEND}. Only Qcloud COS"
-  echo -e "\t${CMSG}4${CEND}. Localhost and Remote host"
-  echo -e "\t${CMSG}5${CEND}. Localhost and Qcloud COS"
-  echo -e "\t${CMSG}6${CEND}. Remote host and Qcloud COS"
+  echo -e "\t${CMSG}1${CEND}. Localhost"
+  echo -e "\t${CMSG}2${CEND}. Remote host"
+  echo -e "\t${CMSG}3${CEND}. Qcloud COS"
+  echo -e "\t${CMSG}4${CEND}. UPYUN(又拍云)" 
   read -p "Please input a number:(Default 1 press Enter) " DESC_BK
   [ -z "$DESC_BK" ] && DESC_BK=1
-  if [[ ! $DESC_BK =~ ^[1-6]$ ]]; then
-    echo "${CWARNING}input error! Please only input number 1~6${CEND}"
-  else
+  ary=(1 2 3 4 12 13 14 23 24 34 123 124 234 1234)
+  if [[ "${ary[@]}" =~ "$DESC_BK" ]]; then
     break
+  else
+    echo "${CWARNING}input error! Please only input number 1,2,12,23,234 and so on${CEND}"
   fi
 done
 
-[ "$DESC_BK" == '1' ] && sed -i 's@^backup_destination=.*@backup_destination=local@' ./options.conf
-[ "$DESC_BK" == '2' ] && sed -i 's@^backup_destination=.*@backup_destination=remote@' ./options.conf
-[ "$DESC_BK" == '3' ] && sed -i 's@^backup_destination=.*@backup_destination=cos@' ./options.conf
-[ "$DESC_BK" == '4' ] && sed -i 's@^backup_destination=.*@backup_destination=local,remote@' ./options.conf
-[ "$DESC_BK" == '5' ] && sed -i 's@^backup_destination=.*@backup_destination=local,cos@' ./options.conf
-[ "$DESC_BK" == '6' ] && sed -i 's@^backup_destination=.*@backup_destination=Remote,cos@' ./options.conf
+sed -i 's@^backup_destination=.*@backup_destination=@' ./options.conf
+[ `echo $DESC_BK | grep -e 1` ] && sed -i 's@^backup_destination=.*@backup_destination=local@' ./options.conf
+[ `echo $DESC_BK | grep -e 2` ] && sed -i 's@^backup_destination=.*@&,remote@' ./options.conf
+[ `echo $DESC_BK | grep -e 3` ] && sed -i 's@^backup_destination=.*@&,cos@' ./options.conf
+[ `echo $DESC_BK | grep -e 4` ] && sed -i 's@^backup_destination=.*@&,upyun@' ./options.conf
 
 while :; do echo
   echo 'Please select your backup content:'
@@ -72,7 +71,7 @@ done
 [ "$CONTENT_BK" == '2' ] && sed -i 's@^backup_content=.*@backup_content=web@' ./options.conf
 [ "$CONTENT_BK" == '3' ] && sed -i 's@^backup_content=.*@backup_content=db,web@' ./options.conf
 
-if [ "$DESC_BK" != '3' ]; then
+if [[ $DESC_BK =~ ^[1,2]$ ]]; then
   while :; do echo
     echo "Please enter the directory for save the backup file: "
     read -p "(Default directory: $backup_dir): " NEW_backup_dir
@@ -133,7 +132,7 @@ echo "You have to backup the content:"
 [ "$CONTENT_BK" != '2' ] && echo "Database: ${CMSG}$db_name${CEND}"
 [ "$CONTENT_BK" != '1' ] && echo "Website: ${CMSG}$website_name${CEND}"
 
-if [[ "$DESC_BK" =~ ^[2,4,6]$ ]]; then
+if [ `echo $DESC_BK | grep -e 2` ]; then
   > tools/iplist.txt
   while :; do echo
     read -p "Please enter the remote host ip: " remote_ip
@@ -166,7 +165,7 @@ if [[ "$DESC_BK" =~ ^[2,4,6]$ ]]; then
   done
 fi
 
-if [[ "$DESC_BK" =~ ^[3,5,6]$ ]]; then
+if [ `echo $DESC_BK | grep -e 3` ]; then
   [ ! -e "${python_install_dir}/bin/python" ] && Install_Python
   [ ! -e "${python_install_dir}/lib/coscmd" ] && ${python_install_dir}/bin/pip install coscmd >/dev/null 2>&1 
   while :; do echo
@@ -217,3 +216,34 @@ if [[ "$DESC_BK" =~ ^[3,5,6]$ ]]; then
     fi
   done
 fi
+
+if [ `echo $DESC_BK | grep -e 4` ]; then
+  if [ ! -e "/usr/local/bin/upx" ] ;then
+    if [ "$OS_BIT" == '64' ]; then
+      wget -qc http://collection.b0.upaiyun.com/softwares/upx/upx-linux-amd64-v0.2.3 -O /usr/local/bin/upx
+    elif [ "$OS_BIT" == '32' ]; then
+      wget -qc http://collection.b0.upaiyun.com/softwares/upx/upx-linux-386-v0.2.3 -O /usr/local/bin/upx
+    fi
+    chmod +x /usr/local/bin/upx
+  fi
+  while :; do echo
+    read -p "Please enter the ServiceName: " ServiceName 
+    [ -z "$ServiceName" ] && continue
+    echo
+    read -p "Please enter the Operator: " Operator 
+    [ -z "$Operator" ] && continue
+    echo
+    read -p "Please enter the Password: " Password 
+    [ -z "$Password" ] && continue
+    echo
+    /usr/local/bin/upx login $ServiceName $Operator $Password >/dev/null 2>&1
+    /usr/local/bin/upx ls >/dev/null 2>&1
+    if [ $? = 0 ];then
+      echo "${CMSG}ServiceName/Operator/Password OK${CEND}"
+      echo
+      break
+    else
+      echo "${CWARNING}input error! ServiceName/Operator/Password invalid${CEND}"
+    fi
+  done
+fi

+ 1 - 1
include/apache-2.4.sh

@@ -36,7 +36,7 @@ Install_Apache24() {
   [ ! -d "${apache_install_dir}" ] && mkdir -p ${apache_install_dir}
   /bin/cp -R ../apr-${apr_version} ./srclib/apr
   /bin/cp -R ../apr-util-${apr_util_version} ./srclib/apr-util
-  LDFLAGS=-ldl LD_LIBRARY_PATH=${openssl_install_dir}/lib ./configure --prefix=${apache_install_dir} --with-mpm=prefork --with-included-apr --enable-headers --enable-deflate --enable-so --enable-dav --enable-rewrite --enable-ssl --with-ssl=${openssl_install_dir} --enable-http2 --with-nghttp2=/usr/local --enable-expires --enable-static-support --enable-suexec --enable-modules=all --enable-mods-shared=all
+  LDFLAGS=-ldl LD_LIBRARY_PATH=${openssl_install_dir}/lib ./configure --prefix=${apache_install_dir} --enable-mpms-shared=all --with-included-apr --enable-headers --enable-deflate --enable-so --enable-dav --enable-rewrite --enable-ssl --with-ssl=${openssl_install_dir} --enable-http2 --with-nghttp2=/usr/local --enable-expires --enable-static-support --enable-suexec --enable-modules=all --enable-mods-shared=all
   make -j ${THREAD} && make install
   unset LDFLAGS
   if [ -e "${apache_install_dir}/conf/httpd.conf" ]; then

+ 1 - 1
versions.txt

@@ -23,7 +23,7 @@ mysql55_version=5.5.59
 
 mariadb102_version=10.2.12
 mariadb101_version=10.1.30
-mariadb100_version=10.0.33
+mariadb100_version=10.0.34
 mariadb55_version=5.5.59
 
 percona57_version=5.7.20-19