设置桶多版本状态

更新时间: 2019-03-14 10:05

您可以通过ObsClient.SetBucketVersioning设置桶的多版本状态。OBS中的桶支持两种多版本状态:


多版本状态

说明

OBS Go SDK枚举常量

启用状态

- 上传对象时,系统为每一个对象创建一个唯一版本号,上传同名的对象将不再覆盖旧的对象,而是创建新的不同版本号的同名对象。
- 可以指定版本号下载对象,不指定版本号默认下载最新对象。
- 删除对象时可以指定版本号删除,不带版本号删除对象仅产生一个带唯一版本号的删除标记,并不删除对象。
- 列出桶内对象列表(ObsClient.ListObjects)时默认列出最新对象列表,可以指定列出桶内所有版本对象列表(ObsClient.ListVersions)。
- 除了删除标记外,每个版本的对象存储均需计费。

VersioningStatusEnabled

暂停状态

- 旧的版本数据继续保留。
- 上传对象时创建对象的版本号为空,上传同名的对象将覆盖原有同名的版本号为空的对象。
- 可以指定版本号下载对象,不指定版本号默认下载最新对象。
- 删除对象时可以指定版本号删除,不带版本号删除对象将产生一个版本号为空的删除标记,并删除版本号为空的对象。
- 除了删除标记外,每个版本的对象存储均需计费。

VersioningStatusSuspended

以下代码展示了如何设置桶的多版本状态:

  1. // 引入依赖包
  2. import (
  3. "fmt"
  4. "obs"
  5. )
  6.  
  7. var ak = "*** Provide your Access Key ***"
  8. var sk = "*** Provide your Secret Key ***"
  9. var endpoint = "https://your-endpoint"
  10.  
  11. // 创建ObsClient结构体
  12. var obsClient, _ = obs.New(ak, sk, endpoint)
  13.  
  14. func main() {
  15. input := &obs.SetBucketVersioningInput{}
  16. input.Bucket = "bucketname"
  17. // 启用桶多版本状态
  18. input.Status = obs.VersioningStatusEnabled
  19. output, err := obsClient.SetBucketVersioning(input)
  20. if err == nil {
  21. fmt.Printf("RequestId:%s\n", output.RequestId)
  22. } else if obsError, ok := err.(obs.ObsError); ok {
  23. fmt.Printf("Code:%s\n", obsError.Code)
  24. fmt.Printf("Message:%s\n", obsError.Message)
  25. }
  26.  
  27. // 暂停桶多版本状态
  28. input.Status = obs.VersioningStatusSuspended
  29. output, err = obsClient.SetBucketVersioning(input)
  30. if err == nil {
  31. fmt.Printf("RequestId:%s\n", output.RequestId)
  32. } else if obsError, ok := err.(obs.ObsError); ok {
  33. fmt.Printf("Code:%s\n", obsError.Code)
  34. fmt.Printf("Message:%s\n", obsError.Message)
  35. }
  36. }

父主题:多版本控制