利用腾讯云COS云对象存储定时远程备份网站

导读:2个月前,张戈博客分享了一篇Python+Shell定时备份网站到阿里云OSS的教程,已经有非常多的站长朋友用上了,反馈还不错,也有不少朋友提出了很多优化建议,比如上传完成后能否删除本地压缩包之类的,本文将继续分享另一种云端备份方案。

利用腾讯云COS云对象存储定时远程备份网站

一、优点分析

内网传输:和阿里云OSS一样,腾讯云COS同样支持内网和外网文件传输,对于腾讯云服务器,使用内网传输绝对是最快、最稳定的备份方案!

免费方案:看了下腾讯云COS的定价说明,发现对于备份网站来说简直是绝佳搭档,甚至可以说是钻了个空子(希望腾讯云的同事看到别打我。。。)!为啥这么说?

看下定价方案:

①、入流量免费

相当于我们上传文件的流量都是免费的,不区分内外网哦!内网就不说了,都懂。利用腾讯云COS云对象存储定时远程备份网站

②、各种免费额度

以七天循环备份(7份压缩包)以来算,单压缩包支持700M+(700M*7≈50G),应付一般网站的备份绝对是足够足够足够了!利用腾讯云COS云对象存储定时远程备份网站

从上述摘选的定价方案来看,腾讯云COS比阿里云OSS更适合做网站备份,关键他还适合在第三方服务器上做远程备份,因为不但入流量(上传)免费,出流量(下载)也免费10GB。

二、准备工作

①、开通COS,并创建Bucket

访问腾讯云COS开通对象存储服务,然后如图创建Bucket:

利用腾讯云COS云对象存储定时远程备份网站

Ps:我们只用于备份,且为私密资料,所以选择私有读写。

②、添加密钥

接着,我们点击左侧的密钥管理,进入密钥界面如图创建密钥,如果先前已经有密钥了,则可以直接使用:利用腾讯云COS云对象存储定时远程备份网站

Ps:这里我们需要记住3个信息:AppID,SecretID和SecretKey,待会要用。

三、备份脚本

人生苦短,我用Python,这里就继续选择Python SDK来实现,

①、环境准备

如下顺序安装腾讯云Python SDK插件:

如果不是Centos,请自行搞定,这里不再赘述。

②、上传脚本

参考官方SDK文档,写了一个简单够用的上传脚本:

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

其中:

  • 1~3个参数是appid、认证ID和认证密钥,也就是前文创建并备忘的密钥信息;
  • 第4个参数是前文创建的Bucket名称,比如mybackup
  • 第5个参数是需要备份的域名(新增的:主要是为了区分下)
  • 第6个参数是要上传的本地文件的绝对路径
  • 特别说明:更新到V4版本后,才发现还需要传入一个地域的参数,这里就不再修改脚本代码了,请直接修改上述代码的region 的值,否则会报404错误!目前可选有shanghai(华东)/guangzhou(华南)/tianjin(华北)/chengdu(西南),具体请看自己的COS所在地域以及腾讯云关于地域的文档

执行后,就能在COS的Object界面看到了上传的文件:利用腾讯云COS云对象存储定时远程备份网站

四、定时备份

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

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

②、使用方法

将上述代码作如下修改:

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

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

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

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

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

之前有朋友留言说能否自动删除已上传的文件呢?这次修改简单的加入了一个是否删除的功能:只需要在脚本执行的最后追加一个 y 参数,成功上传到COS后就会自动删除本次备份的压缩包了(看不懂的慎用)。

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

五、幕后花絮

在折腾SDK的时候,第一眼其实被腾讯云的说明文档虐到了:

利用腾讯云COS云对象存储定时远程备份网站

只说了如何安装SDK插件,然后直接来个def函数,然后就没然后了,到底如何import这个SDK?一脸懵逼。。。

最后在github的 simple.py 中才找到了完整的DEMO:

https://github.com/tencentyun/cos-python-sdk/blob/3.3/sample.py

在这懵逼期间,我甚至用上了腾讯云做好的本地迁移工具,实际也是非常好用,简单配置下就能在后台定时上传更新的文件到COS了:利用腾讯云COS云对象存储定时远程备份网站

篇幅有限,这里就不深入介绍了,除此之外,COS还提供了其他非常实用的工具,比如FTP工具、七牛以及OSS迁移工具等,感兴趣的朋友只需要看下 官方文档 就会弄了!

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

文件下载

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

发表评论

gravatar

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

刷新评论

目前评论:77   其中:访客  64   博主  13

  1. IT学馆 1 来自天朝的朋友 谷歌浏览器 Windows 10 河北省 移动

    update.itxueguan.com,将你的腾讯云和我用了qshell来备份七牛做到一起了

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

      666
      你可以再集成下阿里云的,我博客也有代码

      • IT学馆 1 来自天朝的朋友 谷歌浏览器 Windows 10 北京市 铁通

        阿里云的不免费啊!

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

          可以作为可选项目,比如阿里云的服务器用阿里云的备份肯定是最快最稳定的,我记得是9块钱一年40G吧,挺便宜了。

          • IT学馆 1 来自天朝的朋友 谷歌浏览器 Windows 10 北京市 铁通

            我去看了下还真是40G一年9块,回头搞测试去

          • IT学馆 1 来自天朝的朋友 谷歌浏览器 Windows 10 北京市 铁通

            你这高手,来一起完善啊!

  2. Xider 0 来自天朝的朋友 谷歌浏览器 Windows 10 北京市 移动

    Python的SDK更新了,得用pip install qcloud_cos_v4,要不然会报ERROR_PROXY_AUTH_FAILED

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

      这个已经更新过了,可能你看到了缓存文章

  3. osx.cx 3 来自天朝的朋友 QQ浏览器 Mac OS X 10_12_6 江苏省 联通

    查看了你的文章我自己搞了搞,发现有点问题也讲得比较繁琐,出于无奈,自己用博主的代码修改了一下,特意贴出来,给有需要的人。创建腾讯云COS开通对象存储服务时必须选择华东

    可以跟博主一样 新建成,cos.upload.py然后下面是备份网站数据和MySQL的代码

    备份MySQL

    是不是比张戈大神的要简单一写呢!

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

      我的文章要是你这么简洁,你确定能看得懂?环境不安装的话,你这脚本根本跑不起来,而且你这个备份从头至尾只是一个文件,文章最有价值的7天循环理念就被你丢弃了。另外,谁说只能选华东了? region = “shanghai” 这个参数是摆看的么。。。

  4. 术字门 1 来自天朝的朋友 搜狗浏览器 Windows 7 北京市 电信

    站长,问题来了,看了第一个的,里面的appid secret_id等对应的信息完全不知道填在什么地方,不知道替换方括号里面对应的阿拉伯数字1 2 3 4 5 6呢还是上传认证下的appid secret_id secret_key等,,,我这样类型改的.. appid = int(sys.argv[1008611])
    secret_id = sys.argv[AKIDninFqZwfjRH2GC].decode(‘utf-8’)
    secret_key = sys.argv[rXg186666FOzyN6YepI1].decode(‘utf-8’)
    bucket = sys.argv[niaoge2094].decode(‘utf-8’)

    • 术字门 1 来自天朝的朋友 搜狗浏览器 Windows 7 北京市 电信

      else:
      print(“Example: python %s appid secret_id secret_key Bucket bucket的名字 /data/backup.zip” % sys.argv[0])
      exit()是修改这个吧高手?

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

        你还真是新手中的新手。。。
        修改第四部分–定时备份中的【①、适合COS七天循环备份脚本】,第26行
        $PYTHON $baseDir/cos.upload.py appID 认证KEY 认证密钥 Bucket名称 $1 $2
        改为:

        • 术字门 1 来自天朝的朋友 搜狗浏览器 Windows 7 北京市 电信

          请问博主,也就是说必须要先弄上传脚本然后在弄定时备份脚本才行对吧?我以为直接弄上传脚本就好了诶,这个弄了一周了,简单的备份还是没搞懂,有点晕乎乎的,主要用ftp从服务器上传到cos是走外网,有点懵,谢谢博主指教了啊。这类的在网上找了不下50遍,没基础的不看视频只看文档还真不好搞,

        • 术字门 1 来自天朝的朋友 搜狗浏览器 Windows 7 北京市 电信

          大神,我还是有点懵逼,能求教下我现在应该学什么东西吗?我愿意花一周的时间来学习够用来做好这个cos实时备份的知识,就是无从下口,看了几个别人录制的python基础课程,完全懵逼中

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

            认真按照文章每一步做一遍,肯定能搞定。

加载中,请稍候...