脚本功能描述:
自动获取所有数据库并备份。
自动获取多个网站根目录下的所有网站并备份
自动删除7天前的备份文件
#!/bin/bash # 备份网站和数据库 # 1.自动获取所有 Mysql 数据库自动备份 # 2.指定需要备份的网站根目录,自动备份下面所有的网站(分开) 而且支持多个根目录 # # 使用说明: 每天夜里3点自动执行 # crontab -e # 00 00 * * * /Server/Scripts/AutoBackup/sites_mysql_backup.sh #### 注意!!! 使用前请一定要先设置下面的信息!!!!! ######~设置备份文件保存的目录~###### Backup_Home="/home/backup/" # 备份文件保存的目录 MySQL_Dump="/usr/local/mysql/bin/mysqldump" # mysqldump 文件路径 ######~设置需要备份哪些网站目录~###### Backup_SitesHome=( '/home/wwwroot/web' ) ######~设置MySQL数据账号密码~###### MYSQL_DataPath='/usr/local/mysql/var/' MYSQL_UserName='***' MYSQL_PassWord='****' # 备份数据保存几天 save_days=7 #### 需要设置的内容到此结束 ~!!!! ######~设置要备份的MySql数据库 自动~###### IS_PATH=$(pwd) cd ${MYSQL_DataPath} && Backup_Database=$(ls -d */) cd ${IS_PATH} # 备份网站文件夹 Backup_Dir() { # 获取文件夹名 Backup_Path=$1 # 去掉默认的 / Backup_Path=${Backup_Path%/} # 获取网站目录所在文件夹(父文件夹) Pre_Dir="$(dirname ${Backup_Path})/" # 获取网站目录名 Dir_Name=${Backup_Path##*/} # 保存文件名 Backup_Sites_Name=${Backup_Home}www-${Dir_Name}-$(date +"%Y%m%d").tar.gz tar zcf ${Backup_Sites_Name} -C ${Pre_Dir} ${Dir_Name} echo "Backup Sites: [${1}] ${Pre_Dir} ${Dir_Name} => ${Backup_Sites_Name}" } # 备份数据库 Backup_Sql() { Db_Name=$1 Backup_Db_Name=${Backup_Home}db-${Db_Name}-$(date +"%Y%m%d").sql.gz ${MySQL_Dump} -u${MYSQL_UserName} -p${MYSQL_PassWord} ${Db_Name} | gzip > ${Backup_Db_Name} echo "Backup Db: ${Db_Name} => ${Backup_Db_Name}" } if [ ! -f ${MySQL_Dump} ]; then echo "mysqldump command not found.please check your setting." exit 1 fi if [ ! -d ${Backup_Home} ]; then mkdir -p ${Backup_Home} fi echo "Backup website files..." Backup_Dir=(); for SiteHome in ${Backup_SitesHome[@]};do Backup_Dir=( ${Backup_Dir[@]} $(ls -d ${SiteHome}*/) ) done for dd in ${Backup_Dir[@]};do Backup_Dir ${dd} done echo "Backup Databases..." for db in ${Backup_Database[@]};do if [ ${db%/} != 'performance_schema' -a ${db%/} != 'mysql' -a ${db%/} != 'information_schema' ]; then Backup_Sql ${db%/} fi done echo "Delete old backup files..." find ${Backup_Home} -mtime +${save_days} -exec rm -rf {} \;
评论前必须登录!
注册