问题描述
在开启版本控制的TOS桶中,一个对象的当前版本不是目前所需要的,或者当前版本对象发生错误,想要恢复至上一个版本,如何恢复?
问题分析
可以使用版本控制来保存对象的早期版本,以便需要之前版本对象时,可以进行恢复。
要恢复之前版本,有两种方法:
- 将对象的之前版本复制到同一存储桶中。复制的对象将成为该对象的当前版本
- 永久删除对象的当前版本。当删除当前对象版本时,实际上会将先前版本转换为该对象的当前版本。
解决方案
方法1
复制特定版本到相同存储桶
测试对象为alb1.pcap
1.先查看对象的版本情况:
┌──(root)-[/home/kali]
└─# aws s3api list-object-versions --bucket xxxx --endpoint-url=http://tos-s3-cn-beijing.volces.com
{
"ETag": "\"980a3fcda3a1e8b303eff2be2ed04d78\"",
"Size": 198882,
"StorageClass": "STANDARD",
"Key": "alb1.pcap",
"VersionId": "583191D520036D96BFD6",
"IsLatest": true,
"LastModified": "2021-10-09T02:12:05.000Z",
"Owner": {
"DisplayName": "2100046944",
"ID": "2100046944"
}
},
{
"ETag": "\"980a3fcda3a1e8b303eff2be2ed04d78\"",
"Size": 198882,
"StorageClass": "STANDARD",
"Key": "alb1.pcap",
"VersionId": "5831DEA178974C2D7B89",
"IsLatest": false,
"LastModified": "2021-10-08T02:44:44.000Z",
"Owner": {
"DisplayName": "2100046944",
"ID": "2100046944"
}
},
2.执行aws s3api copy-object
┌──(rootkali)-[/home/kali]
└─# aws s3api copy-object --copy-source xxxx/alb1.pcap?versionId=5831DEA178974C2D7B89 --key alb1.pcap --bucket xxxx --endpoint-url=http://tos-s3-cn-beijing.volces.com
{
"CopySourceVersionId": "5831DEA178974C2D7B89",// 可以看到copy的是之前版本
"VersionId": "583190A07F3F9BF7D0D5",// 新生成的版本ID
"CopyObjectResult": {
"ETag": "\"980a3fcda3a1e8b303eff2be2ed04d78\"",
"LastModified": "2021-10-09T02:34:10.000Z"
}
}
3.查看最新版本信息
┌──(rootkali)-[/home/kali]
└─# aws s3api list-object-versions --bucket xxxx --endpoint-url=http://tos-s3-cn-beijing.volces.com
{
"ETag": "\"980a3fcda3a1e8b303eff2be2ed04d78\"",
"Size": 198882,
"StorageClass": "STANDARD",
"Key": "alb1.pcap",
"VersionId": "583190A07F3F9BF7D0D5",// 可以看到最新版本为上面的copy
"IsLatest": true,
"LastModified": "2021-10-09T02:34:10.000Z",
"Owner": {
"DisplayName": "xxxxxxxx",
"ID": "xxxxxxxx"
}
},
方法2
删除当前版本,使上一个版本变为当前版本
┌──(rootkali)-[/home/kali]
└─# aws s3api delete-object --bucket wanyix-support --key alb1.pcap --version-id 583190A07F3F9BF7D0D5 --endpoint-url=http://tos-s3-cn-beijing.volces.com
{
"VersionId": "583190A07F3F9BF7D0D5"
}
┌──(rootkali)-[/home/kali]
└─# aws s3api list-object-versions --bucket xxxx --endpoint-url=http://tos-s3-cn-beijing.volces.com
{
"ETag": "\"980a3fcda3a1e8b303eff2be2ed04d78\"",
"Size": 198882,
"StorageClass": "STANDARD",
"Key": "alb1.pcap",
"VersionId": "58319100C6CB64F2EAC6",// 此版本变为当前版本
"IsLatest": true,
"LastModified": "2021-10-09T02:27:17.000Z",
"Owner": {
"DisplayName": "xxxxxxxx",
"ID": "xxxxxxxx"
}
},
如果您有其他问题,欢迎您联系火山引擎技术支持服务