千家信息网

如何利用对象存储COS定时远程备份网站

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,本篇文章为大家展示了如何利用对象存储COS定时远程备份网站,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、优点分析内网传输:和阿里云OSS一样,腾讯云COS
千家信息网最后更新 2024年11月26日如何利用对象存储COS定时远程备份网站

本篇文章为大家展示了如何利用对象存储COS定时远程备份网站,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

一、优点分析

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

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

看下定价方案:

①、入流量免费

相当于我们上传文件的流量都是免费的,不区分内外网哦!内网就不说了,都懂。

二、准备工作

①、开通COS,并创建Bucket

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

三、备份脚本

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

①、环境准备

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

#安装pipyum install python-pip#升级pip(yum装的可能版本比较旧)pip install --upgrade pip#安装腾讯云COS SDK插件pip install qcloud_cos

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

②、上传脚本

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

# -*- coding: utf-8 -*-# Upload File To Qcloud COSfrom qcloud_cos import CosClientfrom qcloud_cos import UploadFileRequestimport sys#脚本需要传入6个参数if ( len(sys.argv) > 5 ):    appid      = int(sys.argv[1])    secret_id  = sys.argv[2].decode('utf-8')    secret_key = sys.argv[3].decode('utf-8')    bucket     = sys.argv[4].decode('utf-8')    domain     = sys.argv[5].decode('utf-8')    filePath = sys.argv[6].decode('utf-8')    fileName = filePath.split("/")[-1]else:    print("Example: python %s appid secret_id secret_key Bucket zhangge.net /data/backup.zip">

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

python /data/oss.upload.py appid secret_id secret_key Bucket名称 域名 /data/zhangge.net_1.zip

其中:

  • 1~3个参数是appid、认证ID和认证密钥,也就是前文创建并备忘的密钥信息;

  • 第4个参数是前文创建的Bucket名称,比如mybackup

  • 第5个参数是需要备份的域名(新增的:主要是为了区分下)

  • 第6个参数是要上传的本地文件的绝对路径

执行后,就能在COS的Object界面看到了上传的文件:

四、定时备份

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

①、适合COS七天循环备份脚本
#!/bin/sh####################################################################  Web Backup version 1.0.0 Author: Jager         ## For more information please visit https://zhangge.net/5117.html ##-----------------------------------------------------------------##  Copyright ©2016 zhangge.net. All rights reserved.              ####################################################################isDel=nargs=$#isDel=${!args}mypassword=123456test -f /etc/profile && . /etc/profile >/dev/null 2>&1baseDir=$(cd $(dirname $0) && pwd)zip --version >/dev/null || yum install -y zipZIP=$(which zip)TODAY=`date +%u`PYTHON=$(which python)MYSQLDUMP=$(which mysqldump)# 新增的COS上传文件函数,请按照实际情况修改appID,认证KEY、认证密钥和Bucket名称!!!uploadToCOS(){    $PYTHON $baseDir/cos.upload.py appID 认证KEY 认证密钥 Bucket名称 $1 $2    if [[ $? -eq 0 ]] &&  [[ "$isDel">
②、使用方法

将上述代码作如下修改:

I、根据实际情况修改上述代码中的COS上传函数代码,比如密钥对和Bucket名称(参考前文)
II、替换代码中的mypassword=123456为自己设置的压缩包密码,不修改的话压缩文件解压密码为123456

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

#编辑crontab[root@AlyServer ~]# crontab -e#然后添加如下内容:#备份数据库(参数依次为:db、域名、数据库名称、数据库用户名、对应密码、备份路径 [可选:y 删除本地压缩包])10 3 * * * bash /data/backup.sh db zhangge.net zhangge root 123456 /home/wwwbackup/zhangge.net > /dev/null 2>&1#备份网站文件(参数依次为:file、域名、网站根目录、备份路径 [可选:y 删除本地压缩包])15 3 * * * bash /data/backup.sh file zhangge.net /home/wwwroot/zhangge.net /home/wwwbackup/zhangge.net >/dev/null 2>&1#按下键盘esc,输入 :wq 保存crontab即可

全部完成后,就能实现本地7天循环备份和COS远程备份了!

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

五、幕后花絮

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

只说了如何安装SDK插件,然后直接来个def函数,然后就没然后了,到底如何import这个SDK?一脸懵逼。
最后在github的 simple.py 中才找到了完整的DEMO:
https://github.com/tencentyun/cos-python-sdk/blob/3.3/sample.py

上述内容就是如何利用对象存储COS定时远程备份网站,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0