#!/bin/bash # # author: # desc: MAXIMUM_BACKUP_FILES=7 BACKUP_FOLDERNAME="back_data" DB_HOSTNAME="localhost" #数据库的账号密码和要备份的库,根据自己的实际情况进行备份! DB_USERNAME="db_user" DB_PASSWORD="password" DATABASES=( "db_one" ) #======================= echo "Base Database Backup Tool" CURRENT_DATA=$(date +%F) BACKUP_FOLDER="${BACKUP_FOLDERNAME}_${CURRENT_DATA}" /bin/mkdir /app/data_backup/themis_db/$BACKUP_FOLDER count=0 while [ "x${DATABASES[count]}" != "x" ];do count=$(( count + 1 )) done echo "[+] ${count} databases will be backupd..." for DATABASE in ${DATABASES[@]};do echo "[+] Mysql-Dumping: ${DATABASE}" echo -n " Began: ";echo $(date) if $(${mysql_path}/mysqldump -h${DB_HOSTNAME} -u${DB_USERNAME} -p${DB_PASSWORD} ${DATABASES} > "${back_dir}/${BACKUP_FOLDER}/${DATABASE}.sql");then echo " Dumped successfully!" else echo " Failed dumping this database!" fi echo -n " Finished: ";echo $(date) done echo echo "[+] Packaging and compressing the backup folder..." tar -cv ${back_dir}/${BACKUP_FOLDER} | bzip2 > ${back_dir}/${BACKUP_FOLDER}.tar.bz2 && rm -rf ${back_dir}/${BACKUP_FOLDER} BACKUP_FILES_MADE=$(ls -l ${BACKUP_FOLDERNAME}*.tar.bz2|wc -l) BACKUP_FILES_MADE=$(( $BACKUP_FILES_MADE - 0 )) echo echo "[+] There are ${BACKUP_FILES_MADE} backup files actually." if [ $BACKUP_FILES_MADE -gt $MAXIMUM_BACKUP_FILES ];then REMOVE_FILES=$(( $BACKUP_FILES_MADE - $MAXIMUM_BACKUP_FILES )) echo "[+] Remove ${REMOVE_FILES} old backup files." ALL_BACKUP_FILES=($(ls -t ${BACKUP_FOLDERNAME}*.tar.bz2)) SAFE_BACKUP_FILES=("${ALL_BACKUP_FILES[@]:0:${MAXIMUM_BACKUP_FILES}}") echo "[+] Safeting the newest backup files and removeing old files..." FOLDER_SAFETY="_safety" if [ ! -d $FOLDER_SAFETY ] then mkdir $FOLDER_SAFETY fi for FILE in ${SAFE_BACKUP_FILES[@]};do mv -i ${FILE} ${FOLDER_SAFETY} done rm -rf ${BACKUP_FOLDERNAME}*.tar.bz2 mv -i ${FOLDER_SAFETY}/* ./ rm -rf ${FOLDER_SAFETY} CHAR='' for ((i=0;$i<=100;i+=2)) do printf "Removing:[%-50s]%d%%\r" $CHAR $i sleep 0.1 CHAR=#$CHAR done echo fi
大家在没有好的备份方案时,可以用该备份脚本,脚本测试备份多个数据库时,存在只备份一个数据库的问题,或者tar打包时,选用zcf参数打包,出现备份打包后的数据只有4kb,有解决办法的朋友可以留言!