侧边栏壁纸
博主头像
小新笔记坊

笔耕学思悟,细绘生活卷。

  • 累计撰写 52 篇文章
  • 累计创建 23 个标签
  • 累计收到 49 条评论

目 录CONTENT

文章目录

服务器自动备份数据

小新笔记坊
2024-12-02 / 2 评论 / 1 点赞 / 75 阅读 / 0 字 / 正在检测是否收录...

环境信息

处理器架构: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运行脚本。

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
  • 2
    1. 支付宝打赏

      qrcode alipay
    2. 微信打赏

      qrcode weixin

评论区