Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # usage: backup_site $1
- # $1 user or site to backup
- # where path to site is: /var/www/<user_name>/data/www/<site_name>
- timestamp=`date +%F-%H-%M-%S`
- BACKUP_DIR=/root/backup/$timestamp
- LOG_FILE=$BACKUP_DIR/process.log
- NGINX_CONF_FILE=/etc/nginx/nginx.conf
- mysqldump=/usr/bin/mysqldump
- mkdir -p $BACKUP_DIR
- touch $LOG_FILE
- #redirect stdout&stderr to log file
- #exec 1>>$LOG_FILE
- #exec 2>>$LOG_FILE
- echo '*********************'
- echo "started `date +%F-%T`"
- function backup_mysql() {
- db_name=$1
- db_user=$2
- db_password=$3
- output_file=$4
- # test connection
- echo "select 1;" | mysql --user=$db_user --password=$db_password $db_name > /dev/null && echo "connection ok" || echo "[ERR] CONNECTION ERROR"
- $mysqldump --user=$db_user --password=$db_password --result-file=$output_file $db_name
- gzip $output_file
- }
- function backup_wordpress_db() {
- wp_config=$1
- site_name=$2
- backup_dir=$3
- db_name=$(grep DB_NAME $wp_config | head -1 | awk -F\' '{print $4}')
- db_user=$(grep DB_USER $wp_config | head -1 | awk -F\' '{print $4}')
- db_password=$(grep DB_PASSWORD $wp_config | head -1 | awk -F\' '{print $4}')
- echo "database (wordpress): $db_name"
- backup_mysql $db_name $db_user $db_password $backup_dir/$site_name.sql
- }
- function backup_yii_db() {
- config_file=$1
- site_name=$2
- backup_dir=$3
- db_name=$(grep MAD_DB_NAME $config_file | head -1 | awk -F\' '{print $4}')
- db_user=$(grep MAD_DB_USER $config_file | head -1 | awk -F\' '{print $4}')
- db_password=$(grep MAD_DB_PWD $config_file | head -1 | awk -F\' '{print $4}')
- echo "database (yii): $db_name"
- backup_mysql $db_name $db_user $db_password $backup_dir/$site_name.sql
- }
- function backup_vBulletin_db() {
- config_file=$1
- site_name=$2
- backup_dir=$3
- db_name=$(grep Database $config_file | grep dbname | head -1)
- db_name=$(expr match "$db_name" '.*= *\(.*\) *;')
- db_user=$(grep MasterServer $config_file | grep username | head -1)
- db_user=$(expr match "$db_user" '.*= *\(.*\) *;')
- db_password=$(grep MasterServer $config_file | grep password | head -1)
- db_password=$(expr match "$db_password" '.*= *\(.*\) *;')
- echo "database (vBulletin): $db_name"
- backup_mysql $db_name $db_user $db_password $backup_dir/$site_name.sql
- }
- function backup_MODx_db() {
- config_file=$1
- site_name=$2
- backup_dir=$3
- db_name=$(grep '$dbase' $config_file | head -1 | cut -d\` -f2)
- db_user=$(grep '$database_user' $config_file | head -1 | awk -F\' '{print $2}')
- db_password=$(grep '$database_password' $config_file | head -1 | awk -F\' '{print $2}')
- echo "database (MODx): $db_name"
- backup_mysql $db_name $db_user $db_password $backup_dir/$site_name.sql
- }
- function backup_bd_db() {
- config_file=$1
- site_name=$2
- backup_dir=$3
- db_name=$(grep '$bd_base' $config_file | head -1 | cut -d\' -f2)
- db_user=$(grep '$bd_user' $config_file | head -1 | cut -d\' -f2)
- db_password=$(grep '$bd_password' $config_file | head -1 | cut -d\' -f2)
- echo "database (bd): $db_name"
- backup_mysql $db_name $db_user $db_password $backup_dir/$site_name.sql
- }
- function backup_qa_db() {
- config_file=$1
- site_name=$2
- backup_dir=$3
- db_name=$(grep 'QA_MYSQL_DATABASE' $config_file | head -1 | cut -d\' -f4)
- db_user=$(grep 'QA_MYSQL_USERNAME' $config_file | head -1 | cut -d\' -f4)
- db_password=$(grep 'QA_MYSQL_PASSWORD' $config_file | head -1 | cut -d\' -f4)
- echo "database (qa): $db_name"
- backup_mysql $db_name $db_user $db_password $backup_dir/$site_name.sql
- }
- function backup_db_if_exists() {
- site_path=$1
- site_name=$2
- backup_dir=$3
- [ -f "$site_path/wp-config.php" ] && backup_wordpress_db "$site_path/wp-config.php" $site_name $backup_dir && return
- [ -f "$site_path/config.php" ] && backup_yii_db "$site_path/config.php" $site_name $backup_dir && return
- [ -f "$site_path/forum/includes/config.php" ] && backup_vBulletin_db "$site_path/forum/includes/config.php" $site_name $backup_dir && return
- [ -f "$site_path/manager/includes/config.inc.php" ] && backup_MODx_db "$site_path/manager/includes/config.inc.php" $site_name $backup_dir && return
- [ -f "$site_path/includes/config.php" ] && backup_bd_db "$site_path/includes/config.php" $site_name $backup_dir && return
- [ -f "$site_path/qa-config.php" ] && backup_qa_db "$site_path/qa-config.php" $site_name $backup_dir && return
- echo "[WARN] site hasnt database or error has occured"
- }
- function backup_site() {
- site_path=$1
- backup_dir=$2
- site_name=$(basename $1)
- echo "site: $site_path"
- tar -czf $backup_dir/$site_name.tar.gz --exclude=cache $site_path
- backup_db_if_exists $site_path $site_name $backup_dir
- echo "*** done ***"
- }
- loaded_sites=$(grep 'set $root_path' $NGINX_CONF_FILE | cut -d' ' -f 3 | cut -d';' -f 1)
- sites=()
- echo $loaded_sites
- for site in ${loaded_sites[*]}
- do
- user_name=$(echo $site | cut -d'/' -f 4)
- site_name=$(echo $site | cut -d'/' -f 7)
- if [ $1 ]
- then
- [ $user_name == $1 ] || [ $site_name == $1 ] && sites+=($site)
- else
- sites+=($site)
- fi
- done
- for site in ${sites[*]}
- do
- backup_site $site $BACKUP_DIR
- done
- echo "finished `date +%F-%T`"
- echo '*********************'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement