网站建设捌金手指花总二九,关键词排名seo,网站开发与运营方向,专业网站建设课程一、背景
阿里云对象存储 OSS 是保存海量数据的平台#xff0c;支持丰富的应用。在使用过程中难免会遇到误操作、程序 Bug、覆盖写等导致数据被删除的场景#xff0c;对于数据的丢失会非常着急#xff0c;后果也非常严重#xff0c;甚至某些情况下还会影响你的职业生涯。O…一、背景
阿里云对象存储 OSS 是保存海量数据的平台支持丰富的应用。在使用过程中难免会遇到误操作、程序 Bug、覆盖写等导致数据被删除的场景对于数据的丢失会非常着急后果也非常严重甚至某些情况下还会影响你的职业生涯。OSS 每年都会遇到多起客户误删除数据的事件为此 OSS 开发了 版本控制 功能开启该特性后可以在误删除数据时通过历史版本找回数据。 二、版本控制技术介绍
存储空间Bucket开启版本控制后OSS 会为 Bucket 中所有文件Object的每个版本指定唯一的 ID 值且 Bucket 中现有 Object 的内容、权限保持不变。开启版本控制后还能够防止意外覆盖或者删除 Object 并允许查询、恢复 Object 的历史版本。详细信息请参考 官网 介绍。 如上图所示通过 PUT 操作第一次上传同名 Object keyexample.jpg时原始 Object 版本ID111111作为历史版本生成的新版本ID222222将作为当前版本保存在存储空间中。当再次上传同名 Object 时原始 Object 版本包括 ID111111 以及 ID222222将作为历史版本而生成的新版本ID333333则作为当前版本保存在 Bucket 中。 三、数据防误删实际操作 3.1 开启版本控制
开启版本控制有两种方式
创建时选择开通 版本控制。创建后设置 版本控制。因此通过创建后设置版本控制可以对存量的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 ((dtime2020-06-16 16:55:05 0800 CST) (dtime2020-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 的 版本控制 提供了有效的数据保护方案封装 版本控制生命周期 的回收站也可以帮助更好的优化成本和恢复体验希望您能尽快开通保护您的珍贵数据。
原文链接 本文为云栖社区原创内容未经允许不得转载。