Advertisement
Guest User

Untitled

a guest
Feb 8th, 2017
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.11 KB | None | 0 0
  1. #!/bin/bash
  2. # usage: backup_site $1
  3. # $1 user or site to backup
  4. # where path to site is: /var/www/<user_name>/data/www/<site_name>
  5.  
  6. timestamp=`date +%F-%H-%M-%S`
  7. BACKUP_DIR=/root/backup/$timestamp
  8. LOG_FILE=$BACKUP_DIR/process.log
  9. NGINX_CONF_FILE=/etc/nginx/nginx.conf
  10.  
  11. mysqldump=/usr/bin/mysqldump
  12.  
  13. mkdir -p $BACKUP_DIR
  14. touch $LOG_FILE
  15.  
  16. #redirect stdout&stderr to log file
  17. #exec 1>>$LOG_FILE
  18. #exec 2>>$LOG_FILE
  19.  
  20. echo '*********************'
  21. echo "started `date +%F-%T`"
  22.  
  23. function backup_mysql() {
  24. db_name=$1
  25. db_user=$2
  26. db_password=$3
  27. output_file=$4
  28.  
  29. # test connection
  30. echo "select 1;" | mysql --user=$db_user --password=$db_password $db_name > /dev/null && echo "connection ok" || echo "[ERR] CONNECTION ERROR"
  31. $mysqldump --user=$db_user --password=$db_password --result-file=$output_file $db_name
  32. gzip $output_file
  33. }
  34.  
  35. function backup_wordpress_db() {
  36. wp_config=$1
  37. site_name=$2
  38. backup_dir=$3
  39.  
  40. db_name=$(grep DB_NAME $wp_config | head -1 | awk -F\' '{print $4}')
  41. db_user=$(grep DB_USER $wp_config | head -1 | awk -F\' '{print $4}')
  42. db_password=$(grep DB_PASSWORD $wp_config | head -1 | awk -F\' '{print $4}')
  43. echo "database (wordpress): $db_name"
  44. backup_mysql $db_name $db_user $db_password $backup_dir/$site_name.sql
  45. }
  46.  
  47. function backup_yii_db() {
  48. config_file=$1
  49. site_name=$2
  50. backup_dir=$3
  51.  
  52. db_name=$(grep MAD_DB_NAME $config_file | head -1 | awk -F\' '{print $4}')
  53. db_user=$(grep MAD_DB_USER $config_file | head -1 | awk -F\' '{print $4}')
  54. db_password=$(grep MAD_DB_PWD $config_file | head -1 | awk -F\' '{print $4}')
  55. echo "database (yii): $db_name"
  56. backup_mysql $db_name $db_user $db_password $backup_dir/$site_name.sql
  57. }
  58.  
  59. function backup_vBulletin_db() {
  60. config_file=$1
  61. site_name=$2
  62. backup_dir=$3
  63.  
  64. db_name=$(grep Database $config_file | grep dbname | head -1)
  65. db_name=$(expr match "$db_name" '.*= *\(.*\) *;')
  66.  
  67. db_user=$(grep MasterServer $config_file | grep username | head -1)
  68. db_user=$(expr match "$db_user" '.*= *\(.*\) *;')
  69.  
  70. db_password=$(grep MasterServer $config_file | grep password | head -1)
  71. db_password=$(expr match "$db_password" '.*= *\(.*\) *;')
  72.  
  73. echo "database (vBulletin): $db_name"
  74. backup_mysql $db_name $db_user $db_password $backup_dir/$site_name.sql
  75. }
  76.  
  77. function backup_MODx_db() {
  78. config_file=$1
  79. site_name=$2
  80. backup_dir=$3
  81.  
  82.  
  83. db_name=$(grep '$dbase' $config_file | head -1 | cut -d\` -f2)
  84. db_user=$(grep '$database_user' $config_file | head -1 | awk -F\' '{print $2}')
  85. db_password=$(grep '$database_password' $config_file | head -1 | awk -F\' '{print $2}')
  86.  
  87. echo "database (MODx): $db_name"
  88. backup_mysql $db_name $db_user $db_password $backup_dir/$site_name.sql
  89. }
  90.  
  91. function backup_bd_db() {
  92. config_file=$1
  93. site_name=$2
  94. backup_dir=$3
  95.  
  96. db_name=$(grep '$bd_base' $config_file | head -1 | cut -d\' -f2)
  97. db_user=$(grep '$bd_user' $config_file | head -1 | cut -d\' -f2)
  98. db_password=$(grep '$bd_password' $config_file | head -1 | cut -d\' -f2)
  99.  
  100. echo "database (bd): $db_name"
  101. backup_mysql $db_name $db_user $db_password $backup_dir/$site_name.sql
  102. }
  103.  
  104. function backup_qa_db() {
  105. config_file=$1
  106. site_name=$2
  107. backup_dir=$3
  108.  
  109. db_name=$(grep 'QA_MYSQL_DATABASE' $config_file | head -1 | cut -d\' -f4)
  110. db_user=$(grep 'QA_MYSQL_USERNAME' $config_file | head -1 | cut -d\' -f4)
  111. db_password=$(grep 'QA_MYSQL_PASSWORD' $config_file | head -1 | cut -d\' -f4)
  112.  
  113. echo "database (qa): $db_name"
  114. backup_mysql $db_name $db_user $db_password $backup_dir/$site_name.sql
  115. }
  116.  
  117. function backup_db_if_exists() {
  118. site_path=$1
  119. site_name=$2
  120. backup_dir=$3
  121.  
  122. [ -f "$site_path/wp-config.php" ] && backup_wordpress_db "$site_path/wp-config.php" $site_name $backup_dir && return
  123. [ -f "$site_path/config.php" ] && backup_yii_db "$site_path/config.php" $site_name $backup_dir && return
  124. [ -f "$site_path/forum/includes/config.php" ] && backup_vBulletin_db "$site_path/forum/includes/config.php" $site_name $backup_dir && return
  125. [ -f "$site_path/manager/includes/config.inc.php" ] && backup_MODx_db "$site_path/manager/includes/config.inc.php" $site_name $backup_dir && return
  126. [ -f "$site_path/includes/config.php" ] && backup_bd_db "$site_path/includes/config.php" $site_name $backup_dir && return
  127. [ -f "$site_path/qa-config.php" ] && backup_qa_db "$site_path/qa-config.php" $site_name $backup_dir && return
  128.  
  129. echo "[WARN] site hasnt database or error has occured"
  130. }
  131.  
  132.  
  133. function backup_site() {
  134. site_path=$1
  135. backup_dir=$2
  136. site_name=$(basename $1)
  137.  
  138. echo "site: $site_path"
  139.  
  140. tar -czf $backup_dir/$site_name.tar.gz --exclude=cache $site_path
  141. backup_db_if_exists $site_path $site_name $backup_dir
  142. echo "*** done ***"
  143. }
  144.  
  145.  
  146.  
  147. loaded_sites=$(grep 'set $root_path' $NGINX_CONF_FILE | cut -d' ' -f 3 | cut -d';' -f 1)
  148. sites=()
  149.  
  150. echo $loaded_sites
  151. for site in ${loaded_sites[*]}
  152. do
  153. user_name=$(echo $site | cut -d'/' -f 4)
  154. site_name=$(echo $site | cut -d'/' -f 7)
  155. if [ $1 ]
  156. then
  157. [ $user_name == $1 ] || [ $site_name == $1 ] && sites+=($site)
  158. else
  159. sites+=($site)
  160. fi
  161. done
  162.  
  163. for site in ${sites[*]}
  164. do
  165. backup_site $site $BACKUP_DIR
  166. done
  167.  
  168. echo "finished `date +%F-%T`"
  169. echo '*********************'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement