前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >服务器自动备份数据

服务器自动备份数据

作者头像
小新笔记坊
发布2024-12-17 17:31:05
发布2024-12-17 17:31:05
6400
代码可运行
举报
文章被收录于专栏:云端之上云端之上
运行总次数:0
代码可运行

环境信息

处理器架构:X86

操作系统:CentOS Linux release 7.9.2009 (Core)

功能介绍

1.定时备份数据库。

2.定时备份指定文件夹内容。

3.将所有备份内容打包。

4.将所有备份内容按时间日期文件夹存储。

操作步骤

1.新建存储数据库账户密码文件夹,例如/usr/local/backup_conf

代码语言:javascript
代码运行次数:0
复制
mkdir /usr/local/backup_conf

2.设置该文件夹只允许root账户读写,拒绝其他账户读写。

代码语言:javascript
代码运行次数:0
复制
chmod 600 /usr/local/backup_conf

3.验证。

代码语言:javascript
代码运行次数:0
复制
ls -ld /usr/local/backup_conf

4.新建存储数据库账户密码配置文件,例如/usr/local/backup_conf/backup.conf。设置该文件夹只允许root账户读写,拒绝其他账户读写。

代码语言:javascript
代码运行次数:0
复制
mkdir backup.conf

5.backup.conf文件中写入账户密码信息。设置该文件只允许root账户读写,拒绝其他账户读写。

代码语言:javascript
代码运行次数:0
复制
MYSQL_PASSWORD='hellow_word'    //数据库密码
MYSQL_USER='root'        //数据库账户
DATABASE_NAME='userdb'        //要备份的数据库名 
MYSQL_HOST=localhost
MYSQL_PORT=3306

6.新建存储执行备份的脚本文件的文件。例如/usr/local/backup_go_sh。设置该文件夹只允许root账户读写执行,拒绝其他账户读写执行。

代码语言:javascript
代码运行次数:0
复制
mkdir /usr/local/backup_go_sh
chmod 700 /usr/local/backup_go_sh

7.新建执行备份的脚本文件。例如/usr/local/backup_go_sh/backup.sh。设置该文件夹只允许root账户读写执行,拒绝其他账户读写执行。

代码语言:javascript
代码运行次数:0
复制
#将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文件写入以下内容并保存。

代码语言:javascript
代码运行次数:0
复制
crontab -e
代码语言:javascript
代码运行次数:0
复制
0 2 * * * /usr/local/backup_go_sh/backup.sh

注:每天凌晨2:00运行脚本。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境信息
  • 功能介绍
  • 操作步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档