设置桶多版本状态
更新时间: 2019-03-14 10:05
您可以通过ObsClient.SetBucketVersioning设置桶的多版本状态。OBS中的桶支持两种多版本状态:
多版本状态 | 说明 | OBS Go SDK枚举常量 |
---|---|---|
启用状态 | - 上传对象时,系统为每一个对象创建一个唯一版本号,上传同名的对象将不再覆盖旧的对象,而是创建新的不同版本号的同名对象。 - 可以指定版本号下载对象,不指定版本号默认下载最新对象。 - 删除对象时可以指定版本号删除,不带版本号删除对象仅产生一个带唯一版本号的删除标记,并不删除对象。 - 列出桶内对象列表(ObsClient.ListObjects)时默认列出最新对象列表,可以指定列出桶内所有版本对象列表(ObsClient.ListVersions)。 - 除了删除标记外,每个版本的对象存储均需计费。 | VersioningStatusEnabled |
暂停状态 | - 旧的版本数据继续保留。 - 上传对象时创建对象的版本号为空,上传同名的对象将覆盖原有同名的版本号为空的对象。 - 可以指定版本号下载对象,不指定版本号默认下载最新对象。 - 删除对象时可以指定版本号删除,不带版本号删除对象将产生一个版本号为空的删除标记,并删除版本号为空的对象。 - 除了删除标记外,每个版本的对象存储均需计费。 | VersioningStatusSuspended |
以下代码展示了如何设置桶的多版本状态:
- // 引入依赖包
- import (
- "fmt"
- "obs"
- )
- var ak = "*** Provide your Access Key ***"
- var sk = "*** Provide your Secret Key ***"
- var endpoint = "https://your-endpoint"
- // 创建ObsClient结构体
- var obsClient, _ = obs.New(ak, sk, endpoint)
- func main() {
- input := &obs.SetBucketVersioningInput{}
- input.Bucket = "bucketname"
- // 启用桶多版本状态
- input.Status = obs.VersioningStatusEnabled
- output, err := obsClient.SetBucketVersioning(input)
- if err == nil {
- fmt.Printf("RequestId:%s\n", output.RequestId)
- } else if obsError, ok := err.(obs.ObsError); ok {
- fmt.Printf("Code:%s\n", obsError.Code)
- fmt.Printf("Message:%s\n", obsError.Message)
- }
- // 暂停桶多版本状态
- input.Status = obs.VersioningStatusSuspended
- output, err = obsClient.SetBucketVersioning(input)
- if err == nil {
- fmt.Printf("RequestId:%s\n", output.RequestId)
- } else if obsError, ok := err.(obs.ObsError); ok {
- fmt.Printf("Code:%s\n", obsError.Code)
- fmt.Printf("Message:%s\n", obsError.Message)
- }
- }
父主题:多版本控制