环境信息
处理器架构:X86
操作系统:CentOS Linux release 7.9.2009 (Core)
功能介绍
1.定时备份数据库。
2.定时备份指定文件夹内容。
3.将所有备份内容打包。
4.将所有备份内容按时间日期文件夹存储。
操作步骤
1.新建存储数据库账户密码文件夹,例如/usr/local/backup_conf
。
mkdir /usr/local/backup_conf
2.设置该文件夹只允许root账户读写,拒绝其他账户读写。
chmod 600 /usr/local/backup_conf
3.验证。
ls -ld /usr/local/backup_conf
4.新建存储数据库账户密码配置文件,例如/usr/local/backup_conf/backup.conf
。设置该文件夹只允许root账户读写,拒绝其他账户读写。
mkdir backup.conf
5.backup.conf
文件中写入账户密码信息。设置该文件只允许root账户读写,拒绝其他账户读写。
MYSQL_PASSWORD='hellow_word' //数据库密码
MYSQL_USER='root' //数据库账户
DATABASE_NAME='userdb' //要备份的数据库名
MYSQL_HOST=localhost
MYSQL_PORT=3306
6.新建存储执行备份的脚本文件的文件。例如/usr/local/backup_go_sh
。设置该文件夹只允许root账户读写执行,拒绝其他账户读写执行。
mkdir /usr/local/backup_go_sh
chmod 700 /usr/local/backup_go_sh
7.新建执行备份的脚本文件。例如/usr/local/backup_go_sh/backup.sh
。设置该文件夹只允许root账户读写执行,拒绝其他账户读写执行。
#将backup.sh设置为仅root账户可查看和执行,拒绝所有其他用户查看。
# 将backup.sh设置为仅root账户可查看和执行,拒绝所有其他用户查看。
if [ "$EUID" -ne 0 ]; then
echo "请使用 root 用户运行此脚本"
exit 1
fi
#加载配置文件
source /usr/local/backup_conf/backup.conf
# 设置变量
FILES_TO_BACKUP="/home/upload" # 要备份的项目文件夹目录
BACKUP_MYSQL="/var/lib/mysql/mysql_general.log" #要备份的数据库文件夹目录
BACKUP_DIR="/usr/local/backup" # 指定备份项目文件存储在哪个目录
BACKUP_DIR_LOG="/usr/local/backup_log" # 指定数据库日志备份的文件存储目录
DATE=$(date +%Y%m%d_%H%M) # 包含日期和时间(年月日_时分)
# 创建基于日期和时间的项目文件备份文件夹
mkdir -p "${BACKUP_DIR}/${DATE}"
chmod 600 "${BACKUP_DIR}/${DATE}" # 只有root可以读写
# 创建基于日期和时间的日志文件备份文件夹
mkdir -p "${BACKUP_DIR_LOG}/${DATE}"
chmod 600 "${BACKUP_DIR_LOG}/${DATE}" # 只有root可以读写
# 备份数据库
mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD --host=$MYSQL_HOST --port=$MYSQL_PORT $DATABASE_NAME > "${BACKUP_DIR}/${DATE}/db_$DATE.sql"
chmod 600 "${BACKUP_DIR}/${DATE}/db_$DATE.sql" # 只有root可以读写
gzip "${BACKUP_DIR}/${DATE}/db_$DATE.sql"
chmod 600 "${BACKUP_DIR}/${DATE}/db_$DATE.sql.gz" # 只有root可以读写
# 备份项目文件夹
tar -czf "${BACKUP_DIR}/${DATE}/files_$DATE.tar.gz" $FILES_TO_BACKUP
chmod 600 "${BACKUP_DIR}/${DATE}/files_$DATE.tar.gz" # 只有root可以读写
# 备份nginx日志文件夹
tar -czf "${BACKUP_DIR_LOG}/${DATE}/MYSQL_$DATE.tar.gz" $BACKUP_MYSQL
chmod 600 "${BACKUP_DIR_LOG}/${DATE}/MYSQL_$DATE.tar.gz"$BACKUP_MYSQL
# 可选:删除旧的备份文件
# 这里假设你想删除超过180天的整个备份文件夹
find $BACKUP_DIR -type d -mtime +180 -exec rm -rf {} \;
find $BACKUP_DIR_LOG-type d -mtime +180 -exec rm -rf {} \;
8.设置定时任务,编辑当前用户的crontab
文件写入以下内容并保存。
crontab -e
0 2 * * * /usr/local/backup_go_sh/backup.sh
注:每天凌晨2:00运行脚本。
评论区