下面我将详细讲解 “linux 服务器自动备份脚本的方法(mysql、附件备份)”。
背景介绍
在日常的服务器维护中,备份是至关重要的一项工作。本文主要介绍如何使用linux自动备份脚本备份服务器上的mysql数据库和附件文件。
准备工作
在开始前需要先进行几个准备工作:
- 确定备份的目录和数量
- 安装必要的软件:rsync, mysqldump
编写备份脚本
在linux服务器上编写备份脚本,备份脚本的基本框架如下:
#!/bin/bash
#定义变量
dir=/data/backup #备份文件存放目录
date=$(date +%Y%m%d) #获取当前日期
user=root #数据库用户名
pass=password #数据库密码
db_name=db_name #数据库名称
#创建备份文件存放目录
mkdir -p $dir/$date
#备份mysql数据库
mysqldump -u$user -p$pass --databases $db_name > $dir/$date/$db_name.sql
#同步附件文件
rsync -avzP --delete /path/to/attachs username@remote_host:$dir/$date/attachs
#删除7天前的备份文件
find $dir -ctime +7 -delete
其中:
dir
是备份文件存放目录;date
是当前日期,用于区分备份文件;user
是mysql数据库用户名;pass
是mysql数据库密码;db_name
是需要备份的数据库名称;mkdir -p
命令用于创建备份文件存放目录;mysqldump
命令用于备份mysql数据库,将备份文件存放在指定目录中;rsync
命令用于将附件文件进行同步备份到远程服务器上;find
命令用于删除7天前的备份文件。
设置定时任务
为了实现自动备份,需要将备份脚本设置为定时任务。编辑crontab文件:
crontab -e
在文件末尾添加以下内容:
0 3 * * * /bin/bash /path/to/backup.sh > /dev/null 2>&1
其中:
0 3 * * *
表示每天凌晨3点执行备份任务;/bin/bash
表示执行备份脚本的解释器;/path/to/backup.sh
表示备份脚本所在的路径;> /dev/null 2>&1
表示将脚本的标准输出和标准错误输出都重定向到/dev/null。
示例
为了更好的理解备份脚本,这里提供两个示例:
示例1:备份wordpress博客
假设我们的wordpress博客目录为:/var/www/wordpress,附件存放目录为:/var/www/wordpress/wp-content/uploads。我们可以将备份脚本写成以下形式:
#!/bin/bash
dir=/data/backup
date=$(date +%Y%m%d)
user=root
pass=password
db_name=wordpress
mkdir -p $dir/$date
mysqldump -u$user -p$pass --databases $db_name > $dir/$date/$db_name.sql
rsync -avzP --delete /var/www/wordpress/wp-content/uploads username@remote_host:$dir/$date/uploads
find $dir -ctime +7 -delete
示例2:备份gitlab数据
假设我们的gitlab存储目录为:/var/opt/gitlab,在备份之前需要先停止gitlab服务,然后将备份脚本写成以下形式:
#!/bin/bash
dir=/data/backup
date=$(date +%Y%m%d)
user=root
pass=password
db_name=gitlabhq_production
mkdir -p $dir/$date
#停止 gitlab 服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
#备份数据库
mysqldump -u$user -p$pass --databases $db_name > $dir/$date/$db_name.sql
#备份 gitlab 存储目录
tar -czvf $dir/$date/gitlab.tar.gz /var/opt/gitlab
#同步附件文件
rsync -avzP --delete /var/opt/gitlab/uploads username@remote_host:$dir/$date/uploads
#启动 gitlab 服务
gitlab-ctl start
find $dir -ctime +7 -delete
总结
以上就是如何使用linux自动备份脚本备份服务器上的mysql数据库和附件文件的完整攻略。通过脚本自动备份可以有效保障服务器数据安全,并且提高了日常运维效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux 服务器自动备份脚本的方法(mysql、附件备份) - Python技术站