首页 > 数据库 >备份数据库文件至OSS服务(纯shell脚本无sdk)

备份数据库文件至OSS服务(纯shell脚本无sdk)

时间:2023-10-30 23:31:50浏览次数:26  
标签:tmp shell OSS HOSTNAME DateName usr Date ### sdk

背景:

凡事使用服务器搭建的网站就需要定时备份网站数据,常见的方法是打包网站目录,然后备份到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/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

Date=`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.$Host
MYUSER="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'" [email protected]  
        else
            echo -e ""[$HOSTNAME] DateName $DateName $Date Success"" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Success'" [email protected]
            rm -rf /tmp/$DateName.$OldDate*
        fi
    else
        echo -e ""[$HOSTNAME] DateName $DateName $Date Fail Backup "" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Fail Backup'" [email protected]
    fi
done

#========================BackUp SQL========================



标签:tmp,shell,OSS,HOSTNAME,DateName,usr,Date,###,sdk
From: https://blog.51cto.com/lenglingx/8097926

相关文章

  • DHorse改用fabric8的SDK与k8s集群交互
    现状在dhorse1.4.0版本之前,一直使用k8s官方提供的sdk与k8s集群交互,官方sdk的Maven坐标如下:<dependency> <groupId>io.kubernetes</groupId> <artifactId>client-java</artifactId> <version>18.0.0</version></dependency>但是自从1.4.0版本以后,dhor......
  • API VS SDK!
    APIVSSDK!API(应用程序编程接口)和SDK(软件开发工具包)是软件开发领域的重要工具,但它们具有不同的用途:1.应用程序编程接口API是一组规则和协议,允许不同的软件应用程序和服务相互通信。它定义了软件组件如何交互。促进软件组件之间的数据交换和功能访问。通常由端点、请......
  • 美颜SDK是什么?选择视频美颜SDK的关键因素
    当下,视频美颜技术在各种应用中发挥着越来越重要的作用,从视频通话到社交媒体直播,甚至在线培训和娱乐。随着市场的增长,开发人员和企业需要仔细考虑选择适合他们需求的视频美颜SDK。本文将探讨选择视频美颜SDK的关键因素,以确保您的应用程序提供最佳的美颜效果和用户体验。一、技术性能......
  • Linux21--shell编程基础
    1bashshell介绍#介绍shell是一门解释型、弱类型、动态语言#类比shell语法<===>python语法bash解释器<===>python解释器平台<===>平台2变量2.1基本使用###交互式环境中[root@localhost~]#x=1#1定义变量中间不能有空......
  • shell脚本里如何设置Python的环境变量
    在shell脚本中设置Python的环境变量可以通过以下几个步骤来完成。首先,需要确定Python的安装路径。可以通过以下命令来查找Python的安装路径:该命令会返回Python可执行文件的路径,例如:/usr/bin/python。whichpython接下来,将Python的安装路径添加到PATH环境变量中。PA......
  • PowerShell系列(七)PowerShell当中的Provider介绍
    今天给大家讲解PowerShell当中的非常重要的概念Provider相关的知识,希望对大家能有所帮助!1、Provider概念介绍 PowerShell Provider是基于NetFrameWork运行的一个框架,它的作用是让数据(文件、注册表环境对象等等)以特殊的方式保存在PowerShell里面,然后可以直接通过脚本命令查看和管......
  • Soil and Water Loss in Southern Jiangxi
      Ganzhou, a typical red soil hilly area in Jiangxi province, is a pilot area for high-quality development of soil and water conservation in China. Through a series of following innovative initiatives, soil erosion in Gan......
  • Linux Shell 基础 -- 总结几种括号、引号的用法
    Shell脚本中经常需要用到一些括号、引号表达式,功能各不相同,本文详细介绍一下。1、双引号""双引号常用于包含一组字符串,在双引号中,除了"$"、"\"、"`(反引号)"有特殊含义外,其余字符(如IFS、换行符、回车符等)没有特殊含义。$a=3$echo"$a"输出结果为3,在双引号中$符......
  • PowerShell脚本调试
    官方的IDEWindowsPowerShellISE是支持调试的。但从PowerShell6.0开始,微软改变了战略计划,PowerShell支持跨平台更名为PowershellCore了。而且安装包中不再带ISE了。我们编写脚本的时候和写程序一样可能会发生问题,如果只使用Write-Host输出信息来调试也太Low了。所以支持脚本调试......
  • OSS存储静态资源(直接上手使用)
    什么是OSSOSS是对象存储服务(ObjectStorageService)的缩写,是一种用于存储和访问大规模数据的云存储服务。它提供了安全、可靠、高扩展性的存储解决方案,可用于存储各种类型的数据,如图片、音频、视频、文档等。OSS具有高可用性和耐久性,能够自动复制数据以保证数据的安全性和可靠性。......