技术
成就梦想!

分享Linux下WEB、文件、数据库归档备份脚本

作为运维人员来讲,定期的业务数据备份是必不可少的工作,以便在出现问题时快速恢复数据,保证业务的连续性。
而定期的手动备份效率低而且还容易忘记,所以就写了个Shell脚本进行数据备份。

一、脚本介绍

脚本分归档与传输两个部分
1、归档主要对tar命令数据进行打包;
2、数据库使用mysqldump备份到指定文件夹;
3、文件数据使用SCP进行数据的加密传输,为了安全起见数据只有客户端主动拉取。;
4、使用crontab定时执行脚本;

二、服务端归档脚本

#!/bin/bash
#网站数据备份脚本备份脚本
echo "========================================================Backup Time:`echo $(date +%Y-%m-%d_%H:%M:%S)`"
<<'COMMENT'
参数说明:
BAK_DIR 备份路径;
MYSQLDB 备份的数据库名称;
MYSQLUSR 数据库账号;
MYSQLPASS 数据库密码;
COMMENT

BAK_DIR=/opt/WEB_backup/`date +%Y%m%d`
MYSQLDB=wordpress
MYSQLUSR=root
MYSQLPASS=12345678

if [ $UID -ne 0 ];then
	echo "Must to be user root for exec shell."
	exit
fi

if [ ! -d $BAK_DIR ];then
	mkdir -p $BAK_DIR
	echo "$BAK_DIR Create successfully!"
else
	echo "$BAK_DIR is exists..."
fi
#备份数据库
mysqldump -u$MYSQLUSR -p$MYSQLPASS $MYSQLDB > "$BAK_DIR"/"$MYSQLDB".sql

#备份网站文件
tar -czf `echo "$BAK_DIR/$MYSQLDB"`_WEB.tar.gz -C /home/wwwroot/ www.xxshell.com

#备份虚拟主机配置文件
cp /usr/local/nginx/www.xxshell.com.conf "$BAK_DIR"/www.xxshell.com.conf

#检测备份是否成功
[ -f "$BAK_DIR"/"$MYSQLDB".sql ] && echo "Backup Database OK!" ||echo "Backup Database failure!"
[ -f "$BAK_DIR"/"$MYSQLDB"_WEB.tar.gz ] && echo "Backup WEBFile OK!" ||echo "Backup WEBFile failure!"
[ -f "$BAK_DIR"/www.xxshell.com.conf ] && echo "Backup VhostFile OK!" ||echo "Backup VhostFile failure!"

#删除15天前的备份文件夹
find /opt/WEB_backup/* -type d -mtime +15 -exec rm -r {} \;

三、客户端备份脚本

#!/bin/bash
#网站备份下载脚本
echo "========================================================Backup Time:`echo $(date +%Y-%m-%d_%H:%M:%S)`"
<<'COMMENT'
参数说明:
HOSTNAME 要备份的主机(可以是IP地址);
SCP_PORT SSH端口或者传输数据端口;
HOSTUSR SSH用户名
Remote_DIR 要备份的远端路径
Local_DIR 备份的本地路径
注意!备份之前需要先配置与远端服务器免密,免密可以使用下面命令:
ssh-keygen -t rsa   #生成公钥一直回车即可
ssh-copy-id -i  .ssh/id_rsa.pub root@[主机名]
COMMENT

HOSTNAME=www.xxshell.com
SCP_PORT=22
HOSTUSR=root
Remote_DIR=/opt/WEB_backup
Local_DIR=/opt/

scp -r -P $SCP_PORT  $HOSTUSRt@$HOSTNAME:$Remote_DIR/ $Local_DIR
#判断备份是否成功
[ $? -eq 0 ] && echo "Download success!" ||echo "Download failed!"

四、定时任务配置

#每周日2点执行归档脚本,并将结果追加到backup.log中
0 2 * * 0 /bin/bash /opt/WEB_backup/www.xxshell.com_wordpress_backup.sh >> /opt/WEB_backup/backup.log

#每周日3点执行备份脚本
0 3 * * 0 /bin/bash /opt/scp_download.sh >> /opt/WEB_backup/download.log

将crond服务启动并设置自启动

systemctl enable crond --now    #启动并设置自启动给

systemctl is-active crond     #检查服务是否启动
systemctl is-enabled crond    #检查服务是否开机自启动

备份结果
image

赞(10)
未经允许不得转载:未来往事 » 分享Linux下WEB、文件、数据库归档备份脚本

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址