阿里云osssdk(阿里云oss是干嘛用的)

如何将数据库备份到阿里云的OSS上

第一步:将我们数据库备份到某目录下,注明时间:

运行备份脚本(注意在备份目录下,我的在/home/dbback/下)

查看目录是否生成备份文件,心细的同学可能发现我这个mysqldump没有指定用户名和密码,为啥我运行的时候费用输入密码呢?莫着急,马上为你揭晓答案,因为mysql5.6后(具体版本编号不记得了),如果你把密码写到脚本里,运行会有警告,告诉你不要把密码写到脚本里,会有危险,那我的小伙伴该怎么办呢,官方给了解决方案,期望你是配置到my.cnf文件中,所以,现在打开你的my.cnf,加入如下字段:

有了以上这两条,运行脚本时就不会在提示要输入密码了,马上测试下,看是否成功,如果没问题,我们进入下一步。

第二步:如何自动备份到oss中,开始前我们要做两件事,

1、登录阿里云控制台,点右上“管理控制台”,然后点左上“产品与服务”,在第二列中点击“对象存储OSS”,如果没开通就要开通,如果开通了直接点击右上的“新建bucket”,来创建一个bucket,记住buket的名字。(注:其实通过api也是可以直接创建bucket的,因为这个操作不多,所以我就用控制台来创建了,降低理解的难度。)

2、开始写上传脚本,因为要导入oss的sdk,所以要下安装下,比较简单,跟安装其他python包没啥区别,解压进入目录,然后运行python setup.py install 就安装完毕了,接下来看我们如何使用它,全部代码如下:

#!/usr/bin/python env

#autor:glacier

#date:2015-11-16

import os,os.path,time

import operator

import time

from oss.oss_api import *

prefix = \'/home/dbback\'

logtime = time.strftime(time.ctime())

#filelist = [ file for file in os.listdir(os.path.dirname(os.path.abspath(__file__))) if os.path.isfile(file) ]

filelist = [ file for file in os.listdir(prefix) if os.path.isfile(prefix + \'/\' + file) ]

def get_time(filename):

ft = os.stat(filename)

return ft.st_ctime

#def get_max():

# flist = []

# for file in filelist:

# flist.append(os.stat(file).st_ctime)

# return max(flist)

def get_dist():

d = {}

for file in filelist:

d[file] = get_time(prefix + \'/\' + file)

return d

if __name__ == \'__main__\':

#maxtime = get_max()

d = get_dist()

#dic= sorted(d.iteritems(), key=lambda d:d[1], reverse = True)

upfile = max(d.iteritems(), key=operator.itemgetter(1))[0]

endpoint = \"your aliyun endpoint\"

accessKeyId, accessKeySecret=\"your accessKeyId\",\"your accessKeySecret \"

oss = OssAPI(endpoint, accessKeyId, accessKeySecret)

res = oss.put_object_from_file(\"bucketname\",upfile,prefix + \'/\' + upfile)

if res.status != 200:

with open(\'/var/log/dbback.log\', \'a+\') as f:

f.write(logtime + \' back failed\' + \'\\n\')

我们接下来分析下脚本内容,其中脚本中注释的行都不用看,是我编写过程中测试用的,最开始我们设定了备份文件的目录和记录日志的时间,然后生成了一个备份目录所有文件的列表(列表其实不是最好的方式,我是用最简单的方式了,因为文件多了,列表会慢),然后定义了两个函数,get_time()函数是获取文件的创建时间戳,get_dist()函数是获取文件名和时间戳的字典,主函数部分比较难理解的根据字典value排序获得文件名了,d.iteritems()获得字典中的每个key,value对,key指定了一个函数,operator.itemgetter(1)表示用value来排序(因为就两个元素,key 是0,value就是1了),就是时间戳,排序完后返回key,最后的[0]做了这个工作,脚本其它部分的内容我就不多说了,都是很常见的用法,没什么难于理解的,好,脚本就介绍到这里,接下来进入我们最后一步。

第三步:将脚本写入crontab中,具体什么时候执行,就根据大家各自业务不同来设置了,没什么特别的。

discuz怎么设置阿里云oss远程附件

discuz设置阿里云oss不难,只要你简单了解oss,通过修改config/config_global.php,然后上传oss自带的sdk到根目录,修改网站后台远程附件设置即可。也可以使用第三方插件,具体步骤一句话说不清楚

springboot 集成阿里云oss

对象存储服务(Object Storage Service,简称OSS)

对象存储,也叫做基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作为对象。

服务就是,给你提供对象存储,这项服务了。

当然不要认为只要一家 阿里云oss,国内很多,只是铺天盖地都是他的广告而已。

两种方式,

一种是后台提供接口,让前端或其他子系统调用,不需要他接触我使用的什么方法和储存的配置东西,就给一个文件进行放入到oss 里面

两种,后台值提高配置接口,剩下的你就这几调用他们的sdk里面内容就可以了。例如阿里云的就直接使用android 或ios sdk 配置就行了,你需要什么参数,我都会给你的。

所以介于这两种写的东西也不一样,各个工程师的理解也不一样。

所以这样很简单了不少,这样就封装成一个bean 就可以了。

使用

接着就api 的使用了。。。

不同的 sdk存储方法不一样,参数也不一样。

这个是里java 直接 使用

还是原文档好点。这里这写流程了,因为思路比什么都重要。

后台工作量打一些,

写入两个方法就行,一个上传文件,一个删除文件

删除

上传文件,是前台上传的时候用,删除,是他要删除的,你主动去调用。

不同平台使用不同的sdk ,就需要知道他们参数就可以了就行。

例如ios

需要五个参数

两个参数

上传

原来和ios 一样,直接android 重构OSSFederationCredentialProvider 实现

就可以了,一个接口就行了。

就给他结果就行了

阿里云有三种方式权限

案例使用的是sts 方法。

阿里云STS(Security Token Service)是阿里云提供的一种临时访问权限管理服务。RAM提供RAM用户和RAM角色两种身份。其中,RAM角色不具备永久身份凭证,而只能通过STS获取可以自定义时效和访问权限的临时身份凭证,即安全令牌(STS Token)。

expiration 就是过期的时间。

阿里云OSS对象存储 ErrorCode: SignatureDoesNotMatch 签名不对

1.请确认AccessKeyID与AccessKeySecret正确,确保AccessKeyID与AccessKeySecret前后都没有空格

2.请确保BucketName与ObjectKey命名合法有效且符合要求

3.Bucket命名规范:只能包括小写字母、数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。

Object的命名规范:使用UTF-8编码,长度必须在1-1023字节之间,不能以“/”或者“\\”字符开头。

4.如果是您自己实现的签名,请使用OSS SDK提供的签名方法。OSS的SDK提供了URL/Header签名的实现,详细请参看 授权访问 。

5.如果您的环境不适合使用SDK,需要自己实现签名,签名方法请参考 用户签名验证 ,仔细检查每个签名字段。

6.如果您使用了代理,请检查代理服务器是否添加额外的Header。

7.传入的路径path,不能有//或者\\或者\\\\的斜杠,只能是/单斜杠,例如a/b/c.txt。

8.请检查Endpoint前面没有Bucket,后面没有多余的“/”,前后没有多余的空格

标准的Endpoint如下。

未经允许不得转载:便宜VPS网 » 阿里云osssdk(阿里云oss是干嘛用的)