背景:

凡事使用服务器搭建的网站就需要定时备份网站数据,常见的方法是打包网站目录,然后备份到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)相关推荐

  1. shell脚本执行php文件_分享两个shell脚本实例--批量生成随机字符文件名和批量改名...

    概述 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行. 它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器,或是循环变数.这使得 ...

  2. shell脚本备份国产达梦数据库

    shell脚本备份国产达梦数据库代码如下: 1.配置文件: username=SYSDBA password=SSSTTTSSS ipStr=localhost portNumber=5327 bac ...

  3. shell备份mysql思路_写一个shell脚本备份mysql数据库的步骤

    写一个shell脚本备份mysql数据库的步骤 发布时间:2020-05-25 15:47:41 来源:51CTO 阅读:221 作者:三月 下文我给大家简单讲讲关于写一个shell脚本备份mysql ...

  4. sh文件、shell、shell脚本、bat文件、bat脚本

    综述:对于各个系统不太理解,这几个文件在日常的工作,记录下加深认识 1.shell(壳) shell是一个shell脚本解释器,是一个运行在Linux系统下的批处理脚本解释器,通过这个窗口建立用户和L ...

  5. 跨服务器获取文件shell,shell脚本实现本地文件与服务器文件同步

    为何创建此脚本是因为方便项目的布署,不需要手动地去同步不同的项目,而只需要简单的执行shell脚本,输入项目名就能发布到服器上. 1.shell文件代码 #!/bin/sh read -t 30 -p ...

  6. shell脚本 java jar_linux下shell脚本执行jar文件

    最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...

  7. shell上传文件到服务器,shell脚本上传文件到ftp服务器

    shell脚本上传文件到ftp服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器 ...

  8. MySql直接备份数据库文件的方法(MyISAM和InnoDB有所不同)

    MySql直接备份数据库文件的方法(MyISAM和InnoDB有所不同) mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法 补充:正 ...

  9. Shell脚本实战之文件批量创建和修改

    Shell脚本实战之文件批量创建和修改 一.脚本要求 二.脚本内容 三.脚本运行结果 一.脚本要求 1.所有操作在/python下 2.批量创建12个以py后缀结尾的文件,文件名中必须包含_hcip, ...

最新文章

  1. LNMP平台搭建之一:nginx编译安装
  2. 计算机java语言答案_【计算机二级Java语言】卷019
  3. 作者:张慧(1984-),女,中国科学院软件研究所助理研究员
  4. linux脚本中如何读取文件,如何在Shell脚本中逐行读取文件
  5. 2011/05/19
  6. EMOS批量创建用户邮箱
  7. 【python中级】 获取系统的局域网ip地址
  8. erdas空间建模_ERDAS空间建模工具介绍
  9. 2017届腾讯校园招聘笔试——最后一道编程题
  10. 指针使用入门与 unsafe.Pointer
  11. python h5py 创建无限数据集、在无限数据集上添加新的数据
  12. Arduino 用声音传感器制作简单的“声纹锁”
  13. chrome android 中文版下载,Chrome浏览器安卓版
  14. C#简单调用FMU ,进行仿真计算
  15. 随意发表见解易成无效表达
  16. python气象数据分析_基于Python的气象观测数据的解析与存储
  17. 如何评估机器学习模型的商业价值
  18. Js二代身份证号码正则验证
  19. 黑客在 Windows 95 邮件应用中发现彩蛋
  20. 大型ERP系统源码,界面美观大方,可无限扩展【源码分享】

热门文章

  1. 解读刘强东关于人才的两个标准和5个层次
  2. windows如何卸载Oracle
  3. excel去掉超链接
  4. LeetCode算法题-Reverse Linked List(Java实现)
  5. Java -- 基于JDK1.8的LinkedList源码分析
  6. 系统监控:top vs Htop vs Glances
  7. Nginx HttpMemcModule和直接访问memcached效率对比测试
  8. Redis实现消息队列
  9. React+dva+webpack+antd-mobile 实战分享(二)
  10. 在silverlight中通过对话框把选择的图片插入到RichTextBox中