如何撤销OpenStack Swift中对象的过期日期设置?
在OpenStack Swift中取消对象的过期设置
如果你之前给Swift对象设置了X-Delete-At或X-Delete-After过期头,想要取消删除计划,核心是移除对应的过期元数据,具体操作分两种方式:
用Swift命令行工具操作
先确认对象当前的元数据,查看是否存在过期头:
swift stat <容器名称> <对象名称>输出里会看到
X-Delete-At(指定的删除时间戳)或X-Delete-After(距离删除的秒数)字段。移除过期元数据:
- 如果是
X-Delete-At,执行:swift post <容器名称> <对象名称> -H "X-Remove-Delete-At:" - 如果是
X-Delete-After,执行:swift post <容器名称> <对象名称> -H "X-Remove-Delete-After:"
- 如果是
再次执行
swift stat命令验证,确认对应的过期头已消失,说明取消成功。
用HTTP API操作
直接发送POST请求修改对象元数据,移除过期头:
- 针对
X-Delete-At的情况:curl -X POST \ -H "X-Auth-Token: <你的认证令牌>" \ -H "X-Remove-Delete-At:" \ https://<Swift存储节点地址>/v1/<账户ID>/<容器名称>/<对象名称> - 针对
X-Delete-After的情况:curl -X POST \ -H "X-Auth-Token: <你的认证令牌>" \ -H "X-Remove-Delete-After:" \ https://<Swift存储节点地址>/v1/<账户ID>/<容器名称>/<对象名称>
注意事项
- 确保你拥有该对象的写权限(POST权限),否则操作会失败。
- 如果对象还没被Swift的删除守护进程处理,执行上述操作后会立即取消删除计划。
- Swift 1.8及以上版本都支持
X-Remove-*系列头来移除元数据,旧版本可能需要重新上传对象覆盖,但不推荐这种方式。
内容的提问来源于stack exchange,提问作者paulorodriguez
相关产品推荐
相关产品推荐

