[Shell 脚本] 备份数据库文件至OSS服务(纯shell脚本无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 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; domysqldump --single-transaction -u$MYUSER -p$MYPASS -P3306 $DateName > /tmp/$DateName.$Date.sqlzip -P 密码 /tmp/$DateName.$Date.sql.zip /tmp/$DateName.$Date.sql
###zip压缩设置的密码###if [ -s /tmp/$DateName.$Date.sql.zip ] ; thensource="/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 ];thenecho -e ""[$HOSTNAME] DateName $DateName $Date Fail Upload"" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Fail Upload'" daobidao@daobidao.com elseecho -e ""[$HOSTNAME] DateName $DateName $Date Success"" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Success'" daobidao@daobidao.comrm -rf /tmp/$DateName.$OldDate*fielseecho -e ""[$HOSTNAME] DateName $DateName $Date Fail Backup "" | mutt -s "'[$HOSTNAME] DateName $DateName $Date Fail Backup'" daobidao@daobidao.comfi
done#========================BackUp SQL========================
执行效果可以查看:
http://blog.daobidao.com/shell-backup-sqls-to-oss.html
[Shell 脚本] 备份数据库文件至OSS服务(纯shell脚本无sdk)相关推荐
- shell脚本执行php文件_分享两个shell脚本实例--批量生成随机字符文件名和批量改名...
概述 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行. 它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器,或是循环变数.这使得 ...
- shell脚本备份国产达梦数据库
shell脚本备份国产达梦数据库代码如下: 1.配置文件: username=SYSDBA password=SSSTTTSSS ipStr=localhost portNumber=5327 bac ...
- shell备份mysql思路_写一个shell脚本备份mysql数据库的步骤
写一个shell脚本备份mysql数据库的步骤 发布时间:2020-05-25 15:47:41 来源:51CTO 阅读:221 作者:三月 下文我给大家简单讲讲关于写一个shell脚本备份mysql ...
- sh文件、shell、shell脚本、bat文件、bat脚本
综述:对于各个系统不太理解,这几个文件在日常的工作,记录下加深认识 1.shell(壳) shell是一个shell脚本解释器,是一个运行在Linux系统下的批处理脚本解释器,通过这个窗口建立用户和L ...
- 跨服务器获取文件shell,shell脚本实现本地文件与服务器文件同步
为何创建此脚本是因为方便项目的布署,不需要手动地去同步不同的项目,而只需要简单的执行shell脚本,输入项目名就能发布到服器上. 1.shell文件代码 #!/bin/sh read -t 30 -p ...
- shell脚本 java jar_linux下shell脚本执行jar文件
最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...
- shell上传文件到服务器,shell脚本上传文件到ftp服务器
shell脚本上传文件到ftp服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器 ...
- MySql直接备份数据库文件的方法(MyISAM和InnoDB有所不同)
MySql直接备份数据库文件的方法(MyISAM和InnoDB有所不同) mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法 补充:正 ...
- Shell脚本实战之文件批量创建和修改
Shell脚本实战之文件批量创建和修改 一.脚本要求 二.脚本内容 三.脚本运行结果 一.脚本要求 1.所有操作在/python下 2.批量创建12个以py后缀结尾的文件,文件名中必须包含_hcip, ...
最新文章
- LNMP平台搭建之一:nginx编译安装
- 计算机java语言答案_【计算机二级Java语言】卷019
- 作者:张慧(1984-),女,中国科学院软件研究所助理研究员
- linux脚本中如何读取文件,如何在Shell脚本中逐行读取文件
- 2011/05/19
- EMOS批量创建用户邮箱
- 【python中级】 获取系统的局域网ip地址
- erdas空间建模_ERDAS空间建模工具介绍
- 2017届腾讯校园招聘笔试——最后一道编程题
- 指针使用入门与 unsafe.Pointer
- python h5py 创建无限数据集、在无限数据集上添加新的数据
- Arduino 用声音传感器制作简单的“声纹锁”
- chrome android 中文版下载,Chrome浏览器安卓版
- C#简单调用FMU ,进行仿真计算
- 随意发表见解易成无效表达
- python气象数据分析_基于Python的气象观测数据的解析与存储
- 如何评估机器学习模型的商业价值
- Js二代身份证号码正则验证
- 黑客在 Windows 95 邮件应用中发现彩蛋
- 大型ERP系统源码,界面美观大方,可无限扩展【源码分享】
热门文章
- 解读刘强东关于人才的两个标准和5个层次
- windows如何卸载Oracle
- excel去掉超链接
- LeetCode算法题-Reverse Linked List(Java实现)
- Java -- 基于JDK1.8的LinkedList源码分析
- 系统监控:top vs Htop vs Glances
- Nginx HttpMemcModule和直接访问memcached效率对比测试
- Redis实现消息队列
- React+dva+webpack+antd-mobile 实战分享(二)
- 在silverlight中通过对话框把选择的图片插入到RichTextBox中