backup_setup.sh 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #!/bin/bash
  2. # Author: yeho <lj2007331 AT gmail.com>
  3. # BLOG: https://blog.linuxeye.com
  4. #
  5. # Version: 1.0-Alpha Jun 15,2015 lj2007331 AT gmail.com
  6. # Notes: OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+
  7. #
  8. # Project home page:
  9. # http://oneinstack.com
  10. while :
  11. do
  12. echo
  13. echo 'Please select your backup destination:'
  14. echo -e "\t\033[32m1\033[0m. Only Localhost"
  15. echo -e "\t\033[32m2\033[0m. Only Remote host"
  16. echo -e "\t\033[32m3\033[0m. Localhost and remote host"
  17. read -p "Please input a number:(Default 1 press Enter) " DESC_BK
  18. [ -z "$DESC_BK" ] && DESC_BK=1
  19. if [ $DESC_BK != 1 -a $DESC_BK != 2 -a $DESC_BK != 3 ];then
  20. echo -e "\033[31minput error! Please only input number 1,2,3\033[0m"
  21. else
  22. break
  23. fi
  24. done
  25. [ "$DESC_BK" == '1' ] && { sed -i 's@^local_bankup_yn=.*@local_bankup_yn=y@' ./options.conf; sed -i 's@remote_bankup_yn=.*@remote_bankup_yn=n@' ./options.conf; }
  26. [ "$DESC_BK" == '2' ] && { sed -i 's@^local_bankup_yn=.*@local_bankup_yn=n@' ./options.conf; sed -i 's@remote_bankup_yn=.*@remote_bankup_yn=y@' ./options.conf; }
  27. [ "$DESC_BK" == '3' ] && { sed -i 's@^local_bankup_yn=.*@local_bankup_yn=y@' ./options.conf; sed -i 's@remote_bankup_yn=.*@remote_bankup_yn=y@' ./options.conf; }
  28. . ./options.conf
  29. while :
  30. do
  31. echo
  32. echo "Please enter the directory for save the backup file: "
  33. read -p "(Default directory: $backup_dir): " NEW_backup_dir
  34. [ -z "$NEW_backup_dir" ] && NEW_backup_dir="$backup_dir"
  35. if [ -z "`echo $NEW_backup_dir| grep '^/'`" ]; then
  36. echo -e "\033[31minput error! \033[0m"
  37. else
  38. break
  39. fi
  40. done
  41. sed -i "s@^backup_dir=.*@backup_dir=$NEW_backup_dir@" ./options.conf
  42. while :
  43. do
  44. echo
  45. echo "Pleas enter a valid backup number of days: "
  46. read -p "(Default days: 5): " expired_days
  47. [ -z "$expired_days" ] && expired_days=5
  48. [ -n "`echo $expired_days | sed -n "/^[0-9]\+$/p"`" ] && break || echo -e "\033[31minput error! Please only enter numbers! \033[0m"
  49. done
  50. sed -i "s@^expired_days=.*@expired_days=$expired_days@" ./options.conf
  51. databases=`$db_install_dir/bin/mysql -uroot -p$dbrootpwd -e "show databases\G" | grep Database | awk '{print $2}' | grep -Evw "(performance_schema|information_schema|mysql|ftpusers)"`
  52. while :
  53. do
  54. echo
  55. echo "Please enter one or more name for database, separate multiple database names with commas: "
  56. read -p "(Default database: `echo $databases | tr ' ' ','`) " db_name
  57. db_name=`echo $db_name | tr -d ' '`
  58. [ -z "$db_name" ] && db_name="`echo $databases | tr ' ' ','`"
  59. D_tmp=0
  60. echo $db_name
  61. for D in `echo $db_name | tr ',' ' '`
  62. do
  63. [ -z "`echo $databases | grep -w $D`" ] && { echo -e "\033[31m$D not exist! \033[0m" ; D_tmp=1; }
  64. done
  65. [ "$D_tmp" != '1' ] && break
  66. done
  67. sed -i "s@^db_name=.*@db_name=$db_name@" ./options.conf
  68. websites=`ls $wwwroot_dir | grep -vw default`
  69. while :
  70. do
  71. echo
  72. echo "Please enter one or more name for website, separate multiple website names with commas: "
  73. read -p "(Default website: `echo $websites | tr ' ' ','`) " website_name
  74. website_name=`echo $website_name | tr -d ' '`
  75. [ -z "$website_name" ] && website_name="`echo $websites | tr ' ' ','`"
  76. W_tmp=0
  77. echo $db_name
  78. for W in `echo $website_name | tr ',' ' '`
  79. do
  80. [ ! -e "$wwwroot_dir/$W" ] && { echo -e "\033[31m$wwwroot_dir/$W not exist! \033[0m" ; W_tmp=1; }
  81. done
  82. [ "$W_tmp" != '1' ] && break
  83. done
  84. echo $website_name
  85. sed -i "s@^website_name=.*@website_name=$website_name@" ./options.conf
  86. if [ "$remote_bankup_yn" == 'y' ];then
  87. > tools/iplist.txt
  88. while :
  89. do
  90. echo
  91. read -p "Please enter the remote host ip: " remote_ip
  92. [ -z "$remote_ip" -o "$remote_ip" == '127.0.0.1' ] && continue
  93. echo
  94. read -p "Please enter the remote host port(Default: 22) : " remote_port
  95. [ -z "$remote_port" ] && remote_port=22
  96. echo
  97. read -p "Please enter the remote host user(Default: root) : " remote_user
  98. [ -z "$remote_user" ] && remote_user=root
  99. echo
  100. read -p "Please enter the remote host password: " remote_password
  101. IPcode=$(echo "ibase=16;$(echo "$remote_ip" | xxd -ps -u)"|bc|tr -d '\\'|tr -d '\n')
  102. Portcode=$(echo "ibase=16;$(echo "$remote_port" | xxd -ps -u)"|bc|tr -d '\\'|tr -d '\n')
  103. PWcode=$(echo "ibase=16;$(echo "$remote_password" | xxd -ps -u)"|bc|tr -d '\\'|tr -d '\n')
  104. [ -e "~/.ssh/known_hosts" ] && grep $remote_ip ~/.ssh/known_hosts | sed -i "/$remote_ip/d" ~/.ssh/known_hosts
  105. ./tools/mssh.exp ${IPcode}P $remote_user ${PWcode}P ${Portcode}P true 10
  106. if [ $? -eq 0 ];then
  107. [ -z "`grep $remote_ip tools/iplist.txt`" ] && echo "$remote_ip $remote_port $remote_user $remote_password" >> tools/iplist.txt || echo -e "\033[31m$remote_ip has been added! \033[0m"
  108. while :
  109. do
  110. echo
  111. read -p "Do you want to add more host ? [y/n]: " more_host_yn
  112. if [ "$more_host_yn" != 'y' -a "$more_host_yn" != 'n' ];then
  113. echo -e "\033[31minput error! Please only input 'y' or 'n'\033[0m"
  114. else
  115. break
  116. fi
  117. done
  118. [ "$more_host_yn" == 'n' ] && break
  119. fi
  120. done
  121. fi