一、背景

阿里云对象存储 OSS 是保存海量数据的平台,支持丰富的应用。在使用过程中难免会遇到误操作、程序 Bug、覆盖写等导致数据被删除的场景,对于数据的丢失会非常着急,后果也非常严重,甚至某些情况下还会影响你的职业生涯。OSS 每年都会遇到多起客户误删除数据的事件,为此 OSS 开发了 版本控制 功能,开启该特性后,可以在误删除数据时通过历史版本找回数据。

二、版本控制技术介绍

存储空间(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 中。

三、数据防误删实际操作

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 ((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 的 版本控制 提供了有效的数据保护方案,封装 版本控制+生命周期 的回收站也可以帮助更好的优化成本和恢复体验,希望您能尽快开通,保护您的珍贵数据。

上云就看云栖号:更多云资讯,上云案例,最佳实践,产品入门,访问:https://yqh.aliyun.com/

本文为阿里云原创内容,未经允许不得转载。

快开启阿里云对象存储 OSS 防误删新功能相关推荐

  1. 开启阿里云对象存储OSS防误删新功能,保护您珍贵的数据。

    一.背景 阿里云对象存储 OSS 是保存海量数据的平台,支持丰富的应用.在使用过程中难免会遇到误操作.程序 Bug.覆盖写等导致数据被删除的场景,对于数据的丢失会非常着急,后果也非常严重,甚至某些情况 ...

  2. 阿里云对象存储OSS支持版本管理特性

    2019独角兽企业重金招聘Python工程师标准>>> 阿里云对象存储OSS现已经全面支持"对象版本管理"特性.该功能适用于所有的存储类型以及区域.当Bucket ...

  3. 坑!阿里云对象存储OSS收费细则不只是存储还有其他扣费项

    阿里云对象存储OSS怎么收费?以为只收取存储费用,不只是存储费还有流量.跨区域复制.流量费.请求费.数据处理费用.对象标签费用.传输加速费用等,快看看别让钱花得不清不楚,云吞铺子来详细说下阿里云对象存 ...

  4. 阿里云对象存储OSS用作网站静态文件加速的优势

    什么是对象存储OSS 阿里云对象存储OSS(Object Storage Service)是一款海量.安全.低成本.高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99 ...

  5. 如何结合PICgo,Typora以及阿里云对象存储OSS搭建自己图床写博客

    如何利用阿里云对象存储OSS搭建自己图床写博客 1.购买阿里云 购买链接 登录阿里云–>控制台–>对象存储OSS–购买 购买的时候可以选择按月付费一月一元的,也可以年费9元的,40GB作为 ...

  6. 阿里云对象存储OSS与文件存储NAS的区别

    一.简介 应用场景:选择一款存储产品,面向文档数据的存取,不会涉及到数据处理. 产品选型主要从OSS和NAS中选择一款,满足文档存储的需求. 二.NAS优缺点 NAS 是一种采用直接与网络介质相连的特 ...

  7. 阿里云对象存储OSS存储照片

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 概述 OSS可用于图片.音视频.日志等海量文件的存储.各种终端设备.Web网站程序.移动应用可 ...

  8. 关于阿里云对象存储OSS流量包说明

    阿里云对象存储OSS公网出方向流量是收费的,内网产生的流量或者公网入方向流量都是免费的,OSS流量计费方式分为按量付费和包年包月流量包两种计费模式,云吞铺子来详细说下阿里云对象存储OSS流量收费标准价 ...

  9. 阿里云对象存储OSS(Object Storage Service)

    文章目录 简介 endpoint:阿里云服务部署的地区位置 见解 开发步骤 配置文件 utils层(读取全局配置文件并赋值给类变量) service层 impl(基于oss驱动sdk实现类) cont ...

最新文章

  1. SVN状态图标不显示的两种解决办法
  2. Linux C编程之二:Linux基础
  3. Twitter是如何做到每秒处理3000张图片的?
  4. Java程序员从笨鸟到菜鸟之(一百零七)一步一步学习webservice(一)开篇
  5. Oracle 11gR2学习之三(创建用户及表空间、修改字符集和Oracle开机启动)
  6. 基于CentOS 6.8平台最新源代码包编译安装企业版MariaDB数据库
  7. centos图形化桌面的文件在哪_Windows 远程连接 CentOS 7 图形化桌面
  8. 图解算法学习笔记(目录)
  9. 基于jsp+mysql+Spring的SpringBoot招聘网站项目(完整源码+sql)主要实现了管理员登录,简历管理,问答管理,职位管理,用户管理,职位申请进度更新,查看简历
  10. 疑似Redmi K40新机获得3C认证:搭载联发科天玑1000+ 支持33W快充
  11. SQL查询集合合并成字符串
  12. “依赖混淆”供应链攻击现身 微软苹果特斯拉优步等超35家企业内网失陷
  13. java socket 清理缓冲器_2021年Java全套面试题抢先看!中篇(更新中......)
  14. 安卓分辨率_华为平板M6会不会是最强安卓平板?
  15. 三极管什么时候工作在饱和区
  16. C# winform 如何让TextBox文本内容垂直居中?
  17. Python路飞学城老男孩内部书籍,Python全栈开发实战pdf
  18. 智能车制作pdf 王盼宝_智能车制作——从元器件、机电系统、控制算法到完整的智能车设计(Word+PDF+ePub+PPT)...
  19. App集成ApplePay
  20. UbuntuX11VNC教程

热门文章

  1. 查看文件夹大小容量size工具treesizeportable
  2. softmax和最大熵
  3. 2019年 - 年终总结
  4. 阿里云视频vod.cn-beijing.aliyuncs.com (Domain name not found)
  5. 可多选的combox
  6. Python 第三方模块 机器学习 Scikit-Learn模块 简介,基类,数据集,错误
  7. 新手如何入门轻松学会COMSOL,看完你就明白了
  8. 漏洞扫描工具AWVS介绍及安装教程
  9. 【ChatGPT】是一个危机与机遇并存的时代
  10. 用WKWebView写个h5容器加载mpaas的离线包在线地址的步骤