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

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

#========================BackUp SQL========================
相关实践学习
对象存储OSS快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象OSS的插件,进行简单的数据存、查、删等操作。
相关文章
|
前端开发 数据库
会议室管理系统源码(含数据库脚本)
会议室管理系统源码(含数据库脚本)
332 0
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
关系型数据库 MySQL Linux
实现MySQL数据库的定时自动备份脚本。
拿走,不谢,这个脚本配方(指引)保证你的数据库数据像蛋糕店一样地天天更新,还能确保老旧的蛋糕(数据)不会堆积满仓库。这下可好,数据安全有保障,数据库管理员也能轻松一点,偶尔闲下来的时候,煮杯咖啡,看个剧岂不美哉?别忘了偶尔检查一下你的自动备份是否正常工作,以防万一蛋糕机器出了点小差错。
1027 20
|
Java 数据库
jsp CRM客户管理系统(含数据库脚本以及文档)
jsp CRM客户管理系统(含数据库脚本以及文档)
382 10
|
Java 关系型数据库 MySQL
Java汽车租赁系统源码(含数据库脚本)
Java汽车租赁系统源码(含数据库脚本)
773 4
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
479 68
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
SQL 关系型数据库 数据库连接
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
1036 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
711 0