vspython版本控制_管理版本控制_版本控制_Python_SDK 示例_对象存储 OSS - 阿里云

版本控制应用于存储空间(Bucket) 内的所有文件(Object)。

通过Object的版本管理,在错误覆盖或者删除Object后,您能够将Bucket中存储的Object恢复至任意时刻的历史版本。Bucket的版本状态包括非版本化(默认)、开启版本控制及暂停版本控制三种。

版本控制的详情请参见开发指南的版本控制介绍。

设置Bucket版本控制状态

以下代码用于设置Bucket为开启版本控制(Enabled)或暂停版本控制(Suspended)状态。

# -*- coding: utf-8 -*-

import oss2

from oss2.models import BucketVersioningConfig

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。

auth = oss2.Auth('', '')

# Endpoint以杭州为例,其它Region请按实际情况填写。

bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '')

# 创建bucket版本控制配置。

config = BucketVersioningConfig()

# 状态配置为Enabled或Suspended。

config.status = oss2.BUCKET_VERSIONING_ENABLE

# 设置bucket版本控制状态。

result = bucket.put_bucket_versioning(config)

# 查看http返回码。

print('http response code:', result.status)

设置Bucket版本控制状态的详情请参见PutBucketVersioning。

获取Bucket版本控制状态信息

以下代码用于获取Bucket的版本控制状态信息。

# -*- coding: utf-8 -*-

import oss2

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。

auth = oss2.Auth('', '')

# Endpoint以杭州为例,其它Region请按实际情况填写。

bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '')

# 获取bucket版本控制状态信息。

versioning_info = bucket.get_bucket_versioning()

# 查看bucket版本控制状态, 如果曾开启过版本控制则返回Enabled或Suspended, 如果从未开启过版本控制则返回None。

print('bucket versioning status:', versioning_info.status)

获取Bucket版本控制状态的详情请参见GetBucketVersioning。

列举Bucket中所有Object的版本信息

以下代码用于列举指定Bucket中包括删除标记(Delete Marker)在内的所有Object的版本信息。

# -*- coding: utf-8 -*-

import oss2

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。

auth = oss2.Auth('', '')

# Endpoint以杭州为例,其它Region请按实际情况填写。

bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '')

# 开启bucket多版本功能之后调用list_object_versions接口才会返回不同版本的objec信息。

# 列出Bucket中包括删除标记(Delete Marker)在内的所有Object的版本信息。

result = bucket.list_object_versions()

# 列举所有的object的各版本信息。

next_key_marker = None

next_versionid_marker = None

while True:

result = bucket.list_object_versions(key_marker=next_key_marker, versionid_marker=next_versionid_marker)

# 查看列出的object版本信息。

for version_info in result.versions:

print('version_info.versionid:', version_info.versionid)

print('version_info.key:', version_info.key)

# 查看列出的object删除标记的版本信息。

for del_maker_Info in result.delete_marker:

print('del_maker.key:', del_maker_Info.key)

print('del_maker.versionid:', del_maker_Info.versionid)

is_truncated = result.is_truncated

# 查看列举结果是否完整。如果结果不完整,则继续罗列,如果结果已完整,则退出循环。

if is_truncated:

next_key_marker = result.next_key_marker

next_versionid_marker = result.next_versionid_marker

else:

break

列举Bucket中包括删除标记(Delete Marker)在内的所有Object的版本信息的详情请参见GetBucketVersions(ListObjectVersions)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值