backup.sh 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. #!/bin/bash
  2. # Author: yeho <lj2007331 AT gmail.com>
  3. # BLOG: https://blog.linuxeye.cn
  4. #
  5. # Notes: OneinStack for CentOS/RadHat 6+ Debian 7+ and Ubuntu 12+
  6. #
  7. # Project home page:
  8. # https://oneinstack.com
  9. # https://github.com/lj2007331/oneinstack
  10. # Check if user is root
  11. [ $(id -u) != "0" ] && { echo "${CFAILURE}Error: You must be root to run this script${CEND}"; exit 1; }
  12. oneinstack_dir=$(dirname "`readlink -f $0`")
  13. pushd ${oneinstack_dir}/tools > /dev/null
  14. . ../options.conf
  15. DB_Local_BK() {
  16. for D in `echo ${db_name} | tr ',' ' '`
  17. do
  18. ./db_bk.sh ${D}
  19. done
  20. }
  21. DB_Remote_BK() {
  22. for D in `echo ${db_name} | tr ',' ' '`
  23. do
  24. ./db_bk.sh ${D}
  25. DB_GREP="DB_${D}_`date +%Y%m%d`"
  26. DB_FILE=`ls -lrt ${backup_dir} | grep ${DB_GREP} | tail -1 | awk '{print $NF}'`
  27. echo "file:::${backup_dir}/${DB_FILE} ${backup_dir} push" >> config_bakcup.txt
  28. echo "com:::[ -e "${backup_dir}/${DB_FILE}" ] && rm -rf ${backup_dir}/DB_${D}_$(date +%Y%m%d --date="${expired_days} days ago")_*.tgz" >> config_bakcup.txt
  29. done
  30. }
  31. DB_OSS_BK() {
  32. for D in `echo ${db_name} | tr ',' ' '`
  33. do
  34. ./db_bk.sh ${D}
  35. DB_GREP="DB_${D}_`date +%Y%m%d`"
  36. DB_FILE=`ls -lrt ${backup_dir} | grep ${DB_GREP} | tail -1 | awk '{print $NF}'`
  37. /usr/local/bin/ossutil cp -f ${backup_dir}/${DB_FILE} oss://${oss_bucket}/`date +%F`/${DB_FILE}
  38. [ $? -eq 0 ] && /usr/local/bin/ossutil rm -rf oss://${oss_bucket}/`date +%F --date="${expired_days} days ago"`/
  39. done
  40. }
  41. DB_COS_BK() {
  42. for D in `echo ${db_name} | tr ',' ' '`
  43. do
  44. ./db_bk.sh ${D}
  45. DB_GREP="DB_${D}_`date +%Y%m%d`"
  46. DB_FILE=`ls -lrt ${backup_dir} | grep ${DB_GREP} | tail -1 | awk '{print $NF}'`
  47. ${python_install_dir}/bin/coscmd upload ${backup_dir}/${DB_FILE} /`date +%F`/${DB_FILE}
  48. [ $? -eq 0 ] && ${python_install_dir}/bin/coscmd delete -r -f `date +%F --date="${expired_days} days ago"` > /dev/null 2>&1
  49. done
  50. }
  51. DB_UPYUN_BK() {
  52. for D in `echo ${db_name} | tr ',' ' '`
  53. do
  54. ./db_bk.sh ${D}
  55. DB_GREP="DB_${D}_`date +%Y%m%d`"
  56. DB_FILE=`ls -lrt ${backup_dir} | grep ${DB_GREP} | tail -1 | awk '{print $NF}'`
  57. /usr/local/bin/upx put ${backup_dir}/${DB_FILE} /`date +%F`/${DB_FILE}
  58. [ $? -eq 0 ] && /usr/local/bin/upx rm -a `date +%F --date="${expired_days} days ago"` > /dev/null 2>&1
  59. done
  60. }
  61. DB_QINIU_BK() {
  62. for D in `echo ${db_name} | tr ',' ' '`
  63. do
  64. ./db_bk.sh ${D}
  65. DB_GREP="DB_${D}_`date +%Y%m%d`"
  66. DB_FILE=`ls -lrt ${backup_dir} | grep ${DB_GREP} | tail -1 | awk '{print $NF}'`
  67. /usr/local/bin/qshell rput ${qiniu_bucket} /`date +%F`/${DB_FILE} ${backup_dir}/${DB_FILE}
  68. if [ $? -eq 0 ]; then
  69. /usr/local/bin/qshell listbucket ${qiniu_bucket} /`date +%F --date="${expired_days} days ago"` /tmp/qiniu.txt > /dev/null 2>&1
  70. /usr/local/bin/qshell batchdelete -force ${qiniu_bucket} /tmp/qiniu.txt > /dev/null 2>&1
  71. rm -f /tmp/qiniu.txt
  72. fi
  73. done
  74. }
  75. WEB_Local_BK() {
  76. for W in `echo ${website_name} | tr ',' ' '`
  77. do
  78. ./website_bk.sh $W
  79. done
  80. }
  81. WEB_Remote_BK() {
  82. for W in `echo ${website_name} | tr ',' ' '`
  83. do
  84. if [ `du -sm "${wwwroot_dir}/$WebSite" | awk '{print $1}'` -lt 1024 ]; then
  85. ./website_bk.sh $W
  86. Web_GREP="Web_${W}_`date +%Y%m%d`"
  87. Web_FILE=`ls -lrt ${backup_dir} | grep ${Web_GREP} | tail -1 | awk '{print $NF}'`
  88. echo "file:::${backup_dir}/$Web_FILE ${backup_dir} push" >> config_bakcup.txt
  89. echo "com:::[ -e "${backup_dir}/$Web_FILE" ] && rm -rf ${backup_dir}/Web_${W}_$(date +%Y%m%d --date="${expired_days} days ago")_*.tgz" >> config_bakcup.txt
  90. else
  91. echo "file:::${wwwroot_dir}/$W ${backup_dir} push" >> config_bakcup.txt
  92. fi
  93. done
  94. }
  95. WEB_OSS_BK() {
  96. for W in `echo $website_name | tr ',' ' '`
  97. do
  98. [ ! -e "${wwwroot_dir}/$WebSite" ] && { echo "[${wwwroot_dir}/$WebSite] not exist"; break; }
  99. PUSH_FILE="${backup_dir}/Web_${W}_$(date +%Y%m%d_%H).tgz"
  100. if [ ! -e "${PUSH_FILE}" ]; then
  101. pushd ${wwwroot_dir}
  102. tar czf ${PUSH_FILE} ./$W
  103. popd
  104. fi
  105. /usr/local/bin/ossutil cp -f ${PUSH_FILE} oss://${oss_bucket}/`date +%F`/${PUSH_FILE##*/}
  106. [ $? -eq 0 ] && { [ -e "${PUSH_FILE}" ] && rm -rf ${PUSH_FILE}; /usr/local/bin/ossutil rm -rf oss://${oss_bucket}/`date +%F --date="${expired_days} days ago"`/; }
  107. done
  108. }
  109. WEB_COS_BK() {
  110. for W in `echo ${website_name} | tr ',' ' '`
  111. do
  112. [ ! -e "${wwwroot_dir}/$WebSite" ] && { echo "[${wwwroot_dir}/$WebSite] not exist"; break; }
  113. PUSH_FILE="${backup_dir}/Web_${W}_$(date +%Y%m%d_%H).tgz"
  114. if [ ! -e "${PUSH_FILE}" ]; then
  115. pushd ${wwwroot_dir}
  116. tar czf ${PUSH_FILE} ./$W
  117. popd
  118. fi
  119. ${python_install_dir}/bin/coscmd upload ${PUSH_FILE} /`date +%F`/${PUSH_FILE##*/}
  120. if [ $? -eq 0 ]; then
  121. ${python_install_dir}/bin/coscmd delete -r -f `date +%F --date="${expired_days} days ago"` > /dev/null 2>&1
  122. [ -e "${PUSH_FILE}" -a -z "`echo ${backup_destination} | grep -ow 'local'`" ] && rm -rf ${PUSH_FILE}
  123. fi
  124. done
  125. }
  126. WEB_UPYUN_BK() {
  127. for W in `echo ${website_name} | tr ',' ' '`
  128. do
  129. [ ! -e "${wwwroot_dir}/$WebSite" ] && { echo "[${wwwroot_dir}/$WebSite] not exist"; break; }
  130. [ ! -e "${backup_dir}" ] && mkdir -p ${backup_dir}
  131. PUSH_FILE="${backup_dir}/Web_${W}_$(date +%Y%m%d_%H).tgz"
  132. if [ ! -e "${PUSH_FILE}" ]; then
  133. pushd ${wwwroot_dir}
  134. tar czf ${PUSH_FILE} ./$W
  135. popd
  136. fi
  137. /usr/local/bin/upx put ${PUSH_FILE} /`date +%F`/${PUSH_FILE##*/}
  138. if [ $? -eq 0 ]; then
  139. /usr/local/bin/upx rm -a `date +%F --date="${expired_days} days ago"` > /dev/null 2>&1
  140. [ -e "${PUSH_FILE}" -a -z "`echo ${backup_destination} | grep -ow 'local'`" ] && rm -rf ${PUSH_FILE}
  141. fi
  142. done
  143. }
  144. WEB_QINIU_BK() {
  145. for W in `echo ${website_name} | tr ',' ' '`
  146. do
  147. [ ! -e "${wwwroot_dir}/$WebSite" ] && { echo "[${wwwroot_dir}/$WebSite] not exist"; break; }
  148. [ ! -e "${backup_dir}" ] && mkdir -p ${backup_dir}
  149. PUSH_FILE="${backup_dir}/Web_${W}_$(date +%Y%m%d_%H).tgz"
  150. if [ ! -e "${PUSH_FILE}" ]; then
  151. pushd ${wwwroot_dir}
  152. tar czf ${PUSH_FILE} ./$W
  153. popd
  154. fi
  155. /usr/local/bin/qshell rput ${qiniu_bucket} /`date +%F`/${PUSH_FILE##*/} ${PUSH_FILE}
  156. if [ $? -eq 0 ]; then
  157. /usr/local/bin/qshell listbucket ${qiniu_bucket} /`date +%F --date="${expired_days} days ago"` /tmp/qiniu.txt > /dev/null 2>&1
  158. /usr/local/bin/qshell batchdelete -force ${qiniu_bucket} /tmp/qiniu.txt > /dev/null 2>&1
  159. rm -f /tmp/qiniu.txt
  160. fi
  161. done
  162. }
  163. for DEST in `echo ${backup_destination} | tr ',' ' '`
  164. do
  165. if [ "${DEST}" == 'local' ]; then
  166. [ -n "`echo ${backup_content} | grep -ow db`" ] && DB_Local_BK
  167. [ -n "`echo ${backup_content} | grep -ow web`" ] && WEB_Local_BK
  168. fi
  169. if [ "${DEST}" == 'remote' ]; then
  170. echo "com:::[ ! -e "${backup_dir}" ] && mkdir -p ${backup_dir}" > config_bakcup.txt
  171. [ -n "`echo ${backup_content} | grep -ow db`" ] && DB_Remote_BK
  172. [ -n "`echo ${backup_content} | grep -ow web`" ] && WEB_Remote_BK
  173. ./mabs.sh -c config_bakcup.txt -T -1 | tee mabs.log
  174. fi
  175. if [ "${DEST}" == 'oss' ]; then
  176. [ -n "`echo ${backup_content} | grep -ow db`" ] && DB_OSS_BK
  177. [ -n "`echo ${backup_content} | grep -ow web`" ] && WEB_OSS_BK
  178. fi
  179. if [ "${DEST}" == 'cos' ]; then
  180. [ -n "`echo ${backup_content} | grep -ow db`" ] && DB_COS_BK
  181. [ -n "`echo ${backup_content} | grep -ow web`" ] && WEB_COS_BK
  182. fi
  183. if [ "${DEST}" == 'upyun' ]; then
  184. [ -n "`echo ${backup_content} | grep -ow db`" ] && DB_UPYUN_BK
  185. [ -n "`echo ${backup_content} | grep -ow web`" ] && WEB_UPYUN_BK
  186. fi
  187. if [ "${DEST}" == 'qiniu' ]; then
  188. [ -n "`echo ${backup_content} | grep -ow db`" ] && DB_QINIU_BK
  189. [ -n "`echo ${backup_content} | grep -ow web`" ] && WEB_QINIU_BK
  190. fi
  191. done