Python+Shell脚本结合阿里云OSS对象存储定时远程备份网站

导读:毋庸置疑,数据备份是网站可持续性运营中至关重要的一个工作,如果还没有做任何备份机制的网站,建议尽早完善,莫要等到追悔莫及。本文将分享一个安全稳定、快速可靠、花费廉价的备份方案。

Python+Shell脚本结合阿里云OSS对象存储定时远程备份网站

一、优点分析

张戈博客在2年前已经分享过一篇关于网站备份的文章:《Linux/vps本地七天循环备份和七牛远程备份脚本》,今天将再次结合这个脚本,将网站数据通过阿里云内网备份到阿里云OSS。

对于阿里云OSS,想必大家都不会陌生,具体功能、特色这里就不赘述了。而利用阿里云OSS备份数据的教程方法,网络上已有不少分享,各种开发语言都有,用起来非常方便。

在我看来,用什么语言都是其次,主要还是看重了阿里云ECS到阿里云OSS可以走内网,相比我之前分享的备份到七牛的方案,速度更快而且流量免费!

我博客之前一直将数据每周一凌晨备份一份到七牛,也不敢每天都备份,因为备份的时候由于服务器上行带宽只有1M,就算是切片上传也会导致此时网站访问缓慢,影响蜘蛛抓取!所以,当我看到OSS可以走内网时,第一个想到的好处就是速度快,不影响服务器公网带宽,对网站的访问毫无影响,超赞!

因此,只建议部署在阿里云ECS(9折优惠码:r9itz9,新购可用)的网站使用OSS来备份,其他产品还要走外网备份到OSS就得不偿失了,还不如用七牛。

二、准备工作

①、开通OSS,并创建备份Bucket

访问阿里云 OSS控制台,点击开通OSS,然后新建一个Bucket(名称自定义),注意选择ECS相同的区域(比如青岛的ECS我就选择华北1),并且选择私有读写权限:Python+Shell脚本结合阿里云OSS对象存储定时远程备份网站

②、创建认证密钥

在OSS控制台的右侧栏,点击安全令牌,创建用于管理OSS的密钥对:Python+Shell脚本结合阿里云OSS对象存储定时远程备份网站

创建得到的密钥对记得备忘一下,因为只能获取一次:Python+Shell脚本结合阿里云OSS对象存储定时远程备份网站

2016-10-29补充:看到倡萌的实践分享,他遇到从OSS界面申请的密钥居然不具备OSS访问权限,所以这里也“盗图”补充一下,如果密钥没有权限请如图添加即可:Python+Shell脚本结合阿里云OSS对象存储定时远程备份网站

三、SDK脚本

我根据OSS的帮助文件,选择了适用范围最广的Python SDK方案,并且额外加入了断点续传和上传百分比功能,测试成功。

①、环境准备

OSS的Python SDK需要用到oss2插件,所以我们先安装一下。

如果服务器上已经安装了pip工具,可直接执行如下命令安装oss2插件:

若没有,则复制以下命令行到服务器上执行安装:

②、上传脚本

使用方法:将上述代码保存为 oss.upload.py,并上传到服务器,执行如下命令可开始上传文件到OSS:

其中:

  • 1~2个参数是认证ID和认证密钥就是前文创建并备忘的密钥对。
  • 第3个参数是青岛区域的OSS内网地址,其他区域请参考OSS帮助文档,自行选择。
  • 第4个参数是前文创建的Bucket名称,比如mybackup1
  • 第5个参数是要上传的本地文件的绝对路径

执行后,就能在OSS的Object界面看到了:Python+Shell脚本结合阿里云OSS对象存储定时远程备份网站

③、下载脚本

其实只需要有个上传脚本即可,因为备份文件可直接从Object界面下载。不过,为了方便在服务器上直接恢复文件,还是弄了一个下载脚本。

使用方法:

将上述代码保存为 oss.download.py,并上传到服务器,执行如下命令就可以下载OSS文件到本地:

其中:

  • 1~2个参数是认证ID和认证密钥就是前文创建并备忘的密钥对。
  • 第3个参数是青岛区域的OSS内网地址,其他区域请参考OSS帮助文档,自行选择。
  • 第4个参数是前文创建的Bucket名称,比如mybackup1
  • 第5个参数是存储在OSS的文件名称
  • 第6个参数是保存到本地的文件绝对路径,若不指定则以相同名称保存到脚本相同目录。

好了,以上只是一个上传和下载的脚本,如果你之前已经有了成熟的备份方案,并且本地存储了备份文件,则可以使用上传脚本,结合crontab定时上传到OSS,如果没有请继续往下看。

四、定时备份

有了上传脚本,就可以结合之前张戈博客分享的七天循环备份脚本,实现循环备份到OSS了,既安全还节省OSS空间。

Ps:实际上,一个Python脚本就可以搞定备份压缩和远程上传OSS了,但是之前已经有一个现成的Shell备份脚本了,我就懒得重复造轮子了!

①、适合OSS的七天循环备份脚本

2016年12月16日更新:

1、完善crontab环境变量,解决定时执行中因mysqldump不存在导致备份文件为空的问题;

2、重写Shell脚本,功能没什么变化,也就是看得更顺眼一些。

②、使用方法

将上述代码作如下修改:

I、根据实际情况修改上述代码中的OSS上传函数代码,比如密钥对和Bucket名称(参考前文)

II、替换代码中的mypassword为自己设置的压缩包密码,不修改的话压缩文件解压密码为mypassword

然后,将代码保存为backup.sh,上传到服务器(建议存放到和前文python脚本的相同目录),比如 /data/backup.sh,最后如下添加定时任务:

本文就不赘述7天循环备份脚本的功能和更详细的使用方法了,若还是不清楚请参考前文:Linux/vps本地七天循环备份和七牛远程备份脚本

全部完成后,就能实现本地7天循环备份和OSS远程备份了!如果,之前已经做了七牛远程备份的可以放心取消了。

在文章的最后,为了方便广大代码小白朋友,特提供本文涉及脚本的打包下载:

折腾吧,骚年!好用的话,有钱的可以打赏,没钱的欢迎点赞,不怕一万多,不嫌一块少。。。

文件下载

无限续期,永久免费科学上网服务,你值得拥有!

发表评论

gravatar

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

刷新评论

目前评论:41   其中:访客  36   博主  5

  1. 玉萱自媒体 0 来自天朝的朋友 谷歌浏览器 Windows 7 江苏省苏州市昆山市 电信

    关注你哦,欢迎回踩

    不介意的可以联系我加个友链!

  2. 德国莱默尔 2 来自天朝的朋友 谷歌浏览器 Windows 7 广东省东莞市 移动

    现在阿里无所不能了,好好的万网搞得乱七八糟

  3. Koolight 4 来自天朝的朋友 Safari浏览器  Android 4.4.2 PE-CL00 Build/HuaweiPE-CL00 湖北省 联通

    我好像一直没怎么备份啊。

  4. RaresNote 1 来自天朝的朋友 谷歌浏览器 Windows 7 福建省 铁通

    这和阿里云自带的快照 有什么优缺点呢?

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Mac OS X 10_11_3 广东省深圳市 移动

      比快照更加灵活,快照无法部分恢复,而这个可以随时找到历史的某一个文件。作为快照的补充吧。

  5. 我爱动感单车网 4 来自天朝的朋友 谷歌浏览器 Windows XP 广西桂林市 电信

    咱的博客还用不上阿里云的这个ECS,没法整这块,目前的备份工作使用的是插件。

  6. 龙笑天 4 来自天朝的朋友 火狐浏览器 Windows 7 广东省深圳市 电信

    我都是定期人工备份~~ :sad:

    • Koolight 4 来自天朝的朋友 Safari浏览器  Android 4.4.2 PE-CL00 Build/HuaweiPE-CL00 湖北省 联通

      我都没备份,只要自己不误操作,出现问题就找空间商了。

  7. 信阳私房茶 1 来自天朝的朋友 谷歌浏览器 Windows 10 广东省广州市 电信

    签到成功!签到时间:上午12:28:02,每日签到,生活更精彩哦~

  8. 每日一点 1 来自天朝的朋友 谷歌浏览器 Windows 7 江苏省苏州市 电信

    好深奥,我用的是WDCP,设置时间每天自动备份FTP及数据库

  9. 洋得意自媒体 0 来自天朝的朋友 谷歌浏览器 Windows XP 重庆市 移动

    感谢分享 欢迎回访

  10. 小萝博客 3 来自天朝的朋友 谷歌浏览器 Windows 7 广东省珠海市 电信

    先研究一番

  11. 放大爱育儿 0 Singapore 谷歌浏览器 Windows 7 新加坡

    估计弄起来有点麻烦,下次可以试试看。

  12. 刷百度下拉软件 0 来自天朝的朋友 谷歌浏览器 Windows XP 浙江省嘉兴市 电信

    一般的小网站,就自己定期备份一下就好了

  13. 方法SEO顾问 4 来自天朝的朋友 谷歌浏览器 Windows 7 北京市 北京电信互联网数据中心

    OSS不便宜吧?

  14. 嗖嗖嗖 0 来自天朝的朋友 谷歌浏览器 Windows 7 云南省昆明市 电信

    学习学习

  15. 任务易 2 来自天朝的朋友 谷歌浏览器 Windows 7 湖北省武汉市 电信

    感觉又学到了新的东西

  16. 她们说论坛 0 来自天朝的朋友 谷歌浏览器 Windows 7 上海市 电信

    还不错的样子 :evil:

  17. 高平台球阀 1 来自天朝的朋友 谷歌浏览器 Windows 10 浙江省温州市 电信

    谢谢分享,你的站权重挺高的哦。

  18. 天下彩 0 Cambodia 搜狗浏览器 Windows 7 柬埔寨

    写的不错,支持一下

  19. 犀首 1 来自天朝的朋友 谷歌浏览器 Windows 8.1 北京市 电信CDMA

    支持一下兄弟,特此象征性的赞助一杯咖啡。

  20. 犀首 1 来自天朝的朋友 谷歌浏览器 Windows 8.1 北京市 电信CDMA

    谢谢张兄,最近做了几个兼职。网站也都是单点的,本想自己写个类似的代码,由于公司一直忙,就没顾得上写。今天google无疑间就浏览到了。哈哈。

  21. ysicing 0 来自天朝的朋友 谷歌浏览器 Mac OS X 10_11_6 上海市 腾讯云BGP数据中心

    Get.可以试试哈

  22. 微商货源网 2 来自天朝的朋友 搜狗浏览器 Windows 10 山东省青岛市 电信

    张哥的网站真是必备站长手册啊哈哈哈

  23. 任务易 2 来自天朝的朋友 谷歌浏览器 Windows 7 湖北省 电信

    哇塞,这一看博主就是大神,表示真心看不懂,支持大神!!

  24. 锅子 1 来自天朝的朋友 谷歌浏览器 Windows 10 上海市 电信

    我在想有没有必要搞个七牛,或者阿里oos呢 :shock:

  25. Jaxson 1 来自天朝的朋友 谷歌浏览器 Windows 10 江苏省苏州市昆山市 电信

    很赞的一个功能!

  26. 卢松松商城 1 来自天朝的朋友 谷歌浏览器 Windows 10 浙江省 电信

    好复杂的样子 好好学习。。 :mrgreen:

  27. 胡歌网摘 4 来自天朝的朋友 谷歌浏览器 Windows 7 江西省萍乡市 电信

    oss是收费的吧

  28. 胡倡萌 0 来自天朝的朋友 谷歌浏览器 Windows 10 广西 电信

    阿里云还有一个服务叫 归档存储 ,相较于 OSS,价格更便宜,博主有时间的话,不妨看看,用来备份数据的话,这个应该更适合

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

      确实便宜,OSS是4G 1元/月,这个归档只要几毛钱。。。有空折腾下,多谢大神。

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

      看了下,没有青岛区域的。。。还是不折腾了。

  29. 成航先森 5 来自天朝的朋友 谷歌浏览器 Windows 7 四川省成都市 电信

    最近也终于有了自己的云服务器,不过是腾讯云的学生机,备份到七牛的可以学学。

  30. 胡杨 2 来自天朝的朋友 谷歌浏览器 Windows 7 河南省郑州市 电信

    支持博主

  31. wuou 1 来自天朝的朋友 谷歌浏览器 Windows 7 河南省南阳市 联通

    脚本解决了网络备份问题,极大地提高了安全性。张戈大神功德无量。我这里实际操作中就是有一个问题:oss中关于网站部分的压缩包很正常。但是数据库的压缩包字节数是0,也就是说数据库的备份失败,没有找到什么原因。一切按大神的,没有任何其他的更改。系统:centos6.5 wdcp php5.6

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

      QQ 287988783

      • wuou 1 来自天朝的朋友 谷歌浏览器 Windows 7 河南省南阳市邓州市 联通

        已经加你了。(/data/backup.sh db zhangge.net zhangge root 123456 /home/wwwbackup/zhangge.net >/dev/null 2>&1)这种单次脚本备份测试正常。

        • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

          密码里面有百分号吧?

          • wuou 1 来自天朝的朋友 QQ浏览器  HUAWEI NXT-TL00 Build/HUAWEINXT-TL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.8 TBS/036887 Safari/537.36 MicroMessenger/6.3.31.940 NetType/WIFI Language/zh_CN 河南省南阳市邓州市 联通

            您那篇文章我也看了,密码中没有百分号,都是字母和数字的组合,并且用的是root

            • wuou 1 来自天朝的朋友 谷歌浏览器 Windows 7 河南省南阳市 联通

              在张戈大神的帮助下解决了。问题出在《backup.sh: line 34: mysqldump: command not found》,解决方案就是用大神最新的backup.sh脚本即可。

  32. 小z博客 1 来自天朝的朋友 谷歌浏览器 Windows 10 四川省成都市 电信

    阿里云可以通过内网挂载oss:https://www.xiaoz.me/archives/7320 ,挂载后写个脚本定时cp备份数据到oss也很方便。

加载中,请稍候...