1
0

backup.sh 4.6 KB

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