openstack swift object versioning 支持

Swift 提供了对象版本(归档)管理功能,主要通过两种方式实现:1) 使用 'X-History-Location' 头将历史记录存储在特定容器中,归档对象以 [长度][名称]/[时间戳] 的形式命名。2) 利用 'X-Versions-Location' 头创建归档库,归档规则相同。两种方法在实际应用中略有差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

swift支持对象版本(归档)管理,但是,主要有两种不同的方式去实现:

1、PUT这样的header:"X-History-Location:history_container"到current_container。表明history_container是被put数据的current_container的历史库。current_container里面的每个object,可以重复进行put,如果里面已经有了这个object,那么老的历史版本就会出现在history_container里面,其中这个归档的object在history_container里面的命名规则为:[xxx][ObjectName]/[timestamp],其中xxx为ObjectName的长度,使用16进制表示,ObjectName则为原对象名称,timestamp则为归档的时间。比如current里面有一个versiontest.xml的obeject,那么第二次被put之后,归档库里面的object名称则是:00fversiontest.xml/1520240118.12936。

2、PUT这样的header:"X-Versions-Location:version_container"到current_container。表明version_container是被put数据的current_container的归档库。current_container里面的每个object,可以重复进行put,如果里面已经有了这个object,那么老的历史版本就会出现在version_container里面,其中这个归档的object在version_container里面的命名规则为:[xxx][ObjectName]/[timestamp],其中xxx为ObjectName的长度,使用16进制表示,ObjectName则为原对象名称,timestamp则为归档的时间。比如current里面有一个versiontest.xml的obeject,那么第二次被put之后,归档库里面的object名称则是:00fversiontest.xml/1520240118.12936。

两种用法都可以使用,但是有细微的差别:如下:

用法X-History-LocationX-Versions-Location
二次put老版本进入归档库老版本进入归档库
delete当前库的object历史版本不变老版本还原到当前库
从当前库删除一次删除即可,但是历史版本仍留在历史库有多少个历史版本就需要清理多少次
使用X-History-Location的时候,每次删除当前库的object就会在历史库中产生一个对应的object,如果这个object在当前库已经不存在,那么历史库会产生一个空的object。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值