二、版本掌握技能先容
存储空间(Bucket)开启版本掌握后,OSS 会为 Bucket 中所有文件(Object)的每个版本指定唯一的 ID 值,且 Bucket 中现有 Object 的内容、权限保持不变。开启版本掌握后,还能够防止意外覆盖或者删除 Object ,并许可查询、规复 Object 的历史版本。详细信息,请参考 官网 先容。
如上图所示,通过 PUT 操作第一次上传同名 Object (key=example.jpg)时,原始 Object 版本(ID=111111)作为历史版本,天生的新版本(ID=222222)将作为当前版本保存在存储空间中。当再次上传同名 Object 时,原始 Object 版本(包括 ID=111111 以及 ID=222222)将作为历史版本,而天生的新版本(ID=333333)则作为当前版本保存在 Bucket 中。
三、数据防误删实际操作

开启版本掌握有两种办法:
创建时,选择开通 版本掌握。创建后,设置 版本掌握。因此,通过创建后设置版本掌握,可以对存量的OSS数据设置版本掌握,有效的保障历史数据。
3.2 上传工具
开启版本掌握后,在掌握台有 显示工具的历史版本 框,选择该框则可以显示工具的历史版本,如下图所示。
通过在掌握台上传同名工具,则会天生多个版本,个中显示 (最新版本) 的那个工具是最新工具,更新韶光 也是最近的韶光。
3.3 删除工具
开启版本掌握后,删除工具并不会真正删除,而是插入 删除标记,如下图所示。
删除工具后,如果没有选择 显示工具的历史版本,则在掌握台显示该文件不存在,但实际上工具并未删除,因此可以支持后面的规复操作。
3.4 快捷的规复数据
由于开通了版本保护,数据历史版本并未删除,可以采取下图所示的顺序,DIY 规复数据。第一步,选中 显示工具的历史版本,此时可以看到历史版本,个中显示 (删除标记) 表示该工具被删除。第二步,删除该 (删除标记) 就可以让数据在掌握台重新可见。第三步,删除标记成功后,最近的版本被规复为 (最新版本),此时不管是否选中 显示工具的历史版本,都可以在掌握台看到该工具。
因此,开通了版本掌握后,可以非常便捷的 DIY 规复数据,不用再担心“误操作、程序 Bug、覆盖写”等带来的严重影响。
四、数据误删的批量修复实战(工具)
OSS 掌握台供应了大略的单工具规复能力,但是对付删除目录下的海量文件,效率就非常低下了,须要频繁的UI点击,修复速率太慢。因此 OSS 供应了 ossutil 工具,能够批量修复数据,提高修复效率。
4.1 指定前缀批量修复
全体过程如上图,参考命令为:$) ./ossutilmac64 ls oss://test-jsj-versioning/prefix/ --all-versions | grep -rn "true true oss://" | awk -F ' ' '{drcmd=("./ossutilmac64 rm " $10" --version-id "$7);print drcmd}' | sh个中,删除标记会显示 "true true",以是只须要删除匹配 前缀 的删除标记,即可规复工具。
4.2 指定时间批量修复
全体过程如上图,参考命令为:./ossutilmac64 ls oss://test-jsj-versioning/pre- --all-versions| awk '{(dtime=($1" "$2" "$3" "$4)); if ((dtime>="2020-06-16 16:55:05 +0800 CST") && (dtime<="2020-06-16 16:55:40 +0800 CST")) print}'| grep -rn "true true oss://"| awk -F ' ' '{drcmd=("./ossutilmac64 rm " $10" --version-id "$7);print drcmd}'| sh只须要删除匹配 韶光范围 的删除标记,即可规复工具。
4.3 指定修复列表文件批量修复
全体过程如上图,参考命令为:for i in cat file_list; do ./ossutilmac64 ls oss://test-jsj-versioning/$i --all-versions | grep -rn "true true oss://" | awk -F ' ' '{drcmd=("./ossutilmac64 rm " $10" --version-id "$7);print drcmd}' | sh;done只须要遍历 修复列表文件,并删除工具的删除标记,即可规复工具。
五、版本掌握和生命周期结合实现类回收站(本钱优化)
设置版本掌握后,纵然删除工具也会保留历史版本,这会带来本钱的增加。为了支持版本掌握的数据规复,以及本钱优化,设计了 版本掌握+生命周期 的组合方案,如下图所示。
在生命周期配置中,针对 当前版本(删除标记) 和 历史版本 设置策略,可以将其在指定时间后转换为其他类型从而降落本钱,也可以选择在指定天数(比如30天)之后删除,从而在 30 天内仍旧可以规复数据,类似回收站的保留时长。
六、小结
数据误删除是非常严重的事宜,也是难以预防的问题。通过开通工具存储 OSS 的 版本掌握 供应了有效的数据保护方案,封装 版本掌握+生命周期 的回收站也可以帮助更好的优化本钱和规复体验,希望您能尽快开通,保护您的宝贵数据。