1
0

backup.sh 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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`"
  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_COS_BK() {
  32. for D in `echo ${db_name} | tr ',' ' '`
  33. do
  34. ./db_bk.sh $D
  35. DB_GREP="DB_${D}_`date +%Y`"
  36. DB_FILE=`ls -lrt ${backup_dir} | grep ${DB_GREP} | tail -1 | awk '{print $NF}'`
  37. ${python_install_dir}/bin/coscmd upload ${backup_dir}/$DB_FILE /`date +%F`/$DB_FILE
  38. [ $? -eq 0 ] && ${python_install_dir}/bin/coscmd delete -r -f `date +%F --date="$expired_days days ago"` > /dev/null 2>&1
  39. done
  40. }
  41. DB_UPYUN_BK() {
  42. for D in `echo ${db_name} | tr ',' ' '`
  43. do
  44. ./db_bk.sh $D
  45. DB_GREP="DB_${D}_`date +%Y`"
  46. DB_FILE=`ls -lrt ${backup_dir} | grep ${DB_GREP} | tail -1 | awk '{print $NF}'`
  47. /usr/local/bin/upx put ${backup_dir}/$DB_FILE /`date +%F`/$DB_FILE
  48. [ $? -eq 0 ] && /usr/local/bin/upx rm -a `date +%F --date="$expired_days days ago"` > /dev/null 2>&1
  49. done
  50. }
  51. WEB_Local_BK() {
  52. for W in `echo ${website_name} | tr ',' ' '`
  53. do
  54. ./website_bk.sh $W
  55. done
  56. }
  57. WEB_Remote_BK() {
  58. for W in `echo ${website_name} | tr ',' ' '`
  59. do
  60. if [ `du -sm "${wwwroot_dir}/$WebSite" | awk '{print $1}'` -lt 1024 ]; then
  61. ./website_bk.sh $W
  62. Web_GREP="Web_${W}_`date +%Y`"
  63. Web_FILE=`ls -lrt ${backup_dir} | grep ${Web_GREP} | tail -1 | awk '{print $NF}'`
  64. echo "file:::${backup_dir}/$Web_FILE ${backup_dir} push" >> config_bakcup.txt
  65. 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
  66. else
  67. echo "file:::${wwwroot_dir}/$W ${backup_dir} push" >> config_bakcup.txt
  68. fi
  69. done
  70. }
  71. WEB_COS_BK() {
  72. for W in `echo ${website_name} | tr ',' ' '`
  73. do
  74. [ ! -e "${wwwroot_dir}/$WebSite" ] && { echo "[${wwwroot_dir}/$WebSite] not exist"; break; }
  75. PUSH_FILE="${backup_dir}/Web_${W}_$(date +%Y%m%d_%H).tgz"
  76. if [ ! -e "$PUSH_FILE" ]; then
  77. pushd ${wwwroot_dir}
  78. tar czf $PUSH_FILE ./$W
  79. popd
  80. fi
  81. ${python_install_dir}/bin/coscmd upload $PUSH_FILE /`date +%F`/Web_${W}_$(date +%Y%m%d_%H).tgz
  82. if [ $? -eq 0 ]; then
  83. ${python_install_dir}/bin/coscmd delete -r -f `date +%F --date="$expired_days days ago"` > /dev/null 2>&1
  84. [ -e "$PUSH_FILE" -a -z "`echo ${backup_destination} | grep -ow 'local'`" ] && rm -rf $PUSH_FILE
  85. fi
  86. done
  87. }
  88. WEB_UPYUN_BK() {
  89. for W in `echo ${website_name} | tr ',' ' '`
  90. do
  91. [ ! -e "${wwwroot_dir}/$WebSite" ] && { echo "[${wwwroot_dir}/$WebSite] not exist"; break; }
  92. [ ! -e "${backup_dir}" ] && mkdir -p ${backup_dir}
  93. PUSH_FILE="${backup_dir}/Web_${W}_$(date +%Y%m%d_%H).tgz"
  94. if [ ! -e "$PUSH_FILE" ]; then
  95. pushd ${wwwroot_dir}
  96. tar czf $PUSH_FILE ./$W
  97. popd
  98. fi
  99. /usr/local/bin/upx put $PUSH_FILE /`date +%F`/Web_${W}_$(date +%Y%m%d_%H).tgz
  100. if [ $? -eq 0 ]; then
  101. /usr/local/bin/upx rm -a `date +%F --date="$expired_days days ago"` > /dev/null 2>&1
  102. [ -e "$PUSH_FILE" -a -z "`echo ${backup_destination} | grep -ow 'local'`" ] && rm -rf $PUSH_FILE
  103. fi
  104. done
  105. }
  106. for DEST in `echo ${backup_destination} | tr ',' ' '`
  107. do
  108. if [ "$DEST" == 'local' ]; then
  109. [ -n "`echo ${backup_content} | grep -ow db`" ] && DB_Local_BK
  110. [ -n "`echo ${backup_content} | grep -ow web`" ] && WEB_Local_BK
  111. fi
  112. if [ "$DEST" == 'remote' ]; then
  113. echo "com:::[ ! -e "${backup_dir}" ] && mkdir -p ${backup_dir}" > config_bakcup.txt
  114. [ -n "`echo ${backup_content} | grep -ow db`" ] && DB_Remote_BK
  115. [ -n "`echo ${backup_content} | grep -ow web`" ] && WEB_Remote_BK
  116. ./mabs.sh -c config_bakcup.txt -T -1 | tee mabs.log
  117. fi
  118. if [ "$DEST" == 'cos' ]; then
  119. [ -n "`echo ${backup_content} | grep -ow db`" ] && DB_COS_BK
  120. [ -n "`echo ${backup_content} | grep -ow web`" ] && WEB_COS_BK
  121. fi
  122. if [ "$DEST" == 'upyun' ]; then
  123. [ -n "`echo ${backup_content} | grep -ow db`" ] && DB_UPYUN_BK
  124. [ -n "`echo ${backup_content} | grep -ow web`" ] && WEB_UPYUN_BK
  125. fi
  126. done