博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Shell 脚本] 备份数据库文件至OSS服务(纯shell脚本无sdk) ...
阅读量:7088 次
发布时间:2019-06-28

本文共 2750 字,大约阅读时间需要 9 分钟。

背景:

凡事使用服务器搭建的网站就需要定时备份网站数据,常见的方法是打包网站目录,然后备份到FTP服务器上等。也有通过OSS SDK把备份的网站文件上传到OSS服务器上,但是通过SDK来实现,需要一定的技术能力,而且相对比较复杂,需要使用更多的文件,而这篇文章是通过shell脚本,并不是通过OSS SDK来上传文件,简单方便。

步骤:

1、首先需要在阿里云注册账号,开通OSS服务,创建bucket,Bucket设置为私有读写。

2、将下面的脚本文件复制下来,保存为 .sh 脚本文件(例如:backupsqls,放置在/usr/local/sbin/backupsites),其中需要把oss地址、bucket名字、Access ID、Access Key、网站目录,已经通知邮件的地址修改成自己的。

3、使用命令: chmod +x /usr/local/sbin/backupsqls 对文件设置执行权限。

4、使用命令: echo “0 0 * * * /usr/local/sbin/backupsqls” >>/var/spool/cron/root

设置每天零点进行备份网站数据。

脚本:

#!/bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATHDate=`date +%Y-%m-%d_%H:%M:%S`BucketTime=`date +%Y%m`OldDate=$(date -d "-7 days" "+%Y-%m-%d")Host="oss-cn-hangzhou-internal.aliyuncs.com"###oss的地址###Bucket="bucketname"###bucket名字###Id="xxxxxxxx"###Access ID###Key="xxxxxxxxxx"###Access Key###OssHost=$Bucket.$HostMYUSER="xxxxx"MYPASS="xxxxxx"###备份数据库账号信息###DBS=`mysql -u$MYUSER -p$MYPASS -P3306 -Bse "show databases" | grep -v "information_schema" | grep -v "test"`###罗列数据库信息####========================BackUp SQL========================for DateName in $DBS; do    mysqldump --single-transaction -u$MYUSER -p$MYPASS -P3306 $DateName > /tmp/$DateName.$Date.sql    zip -P 密码 /tmp/$DateName.$Date.sql.zip /tmp/$DateName.$Date.sql###zip压缩设置的密码###    if [ -s /tmp/$DateName.$Date.sql.zip ] ; then                source="/tmp/$DateName.$Date.sql.zip"        dest="$BucketTime/$DateName.$Date.sql.zip"                resource="/${Bucket}/${dest}"        contentType=`file -ib ${source} |awk -F ";" '{print $1}'`        dateValue="`TZ=GMT env LANG=en_US.UTF-8 date +'%a, %d %b %Y %H:%M:%S GMT'`"        stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}"        signature=`echo -en $stringToSign | openssl sha1 -hmac ${Key} -binary | base64`        url=http://${OssHost}/${dest}        echo "upload ${source} to ${url}"        curl -i -q -X PUT -T "${source}" \            -H "Host: ${OssHost}" \            -H "Date: ${dateValue}" \            -H "Content-Type: ${contentType}" \            -H "Authorization: OSS ${Id}:${signature}" \            ${url}        if [ $? -ne 0 ];then            echo -e ""[$HOSTNAME] DateName $DateName $Date Fail Upload"" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Fail Upload'" daobidao@daobidao.com          else            echo -e ""[$HOSTNAME] DateName $DateName $Date Success"" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Success'" daobidao@daobidao.com            rm -rf /tmp/$DateName.$OldDate*        fi        else        echo -e ""[$HOSTNAME] DateName $DateName $Date Fail Backup "" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Fail Backup'" daobidao@daobidao.com    fidone#========================BackUp SQL========================

执行效果可以查看:

转载地址:http://ngfql.baihongyu.com/

你可能感兴趣的文章
有上下界的网络流问题
查看>>
AspectJ获取方法注解的信息
查看>>
HDU 4902 Nice boat(线段树)
查看>>
Codeforces Round #114 (Div. 1) E. Wizards and Bets 高斯消元
查看>>
怎样调通微信支付及微信发货通知接口(Js API)
查看>>
Android 属性动画(Property Animation) 全然解析 (下)
查看>>
推断汉字正則表達式更严谨方法!
查看>>
如何避免误删CleanMyMac语言文件
查看>>
Linux下免安装mysql
查看>>
快钱报错:javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name解决
查看>>
Hadoop集群WordCount运行详解(转)
查看>>
[转]SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
查看>>
一次性搞清楚equals和hashCode
查看>>
Android Studio IDE的 LogCat如何过滤指定应用的调试信息
查看>>
23个常用正则表达式(数值和字符串)
查看>>
struts2中struts.xml配置文件详解
查看>>
Javascript中的with用法
查看>>
GIS-008-ArcGIS JS API 全图
查看>>
js splice方法
查看>>
Linux--多网卡的7种Bond模式
查看>>