天天看點

快開啟阿裡雲對象存儲 OSS 防誤删新功能--版本控制,保護您珍貴的資料一、背景二、版本控制技術介紹三、資料防誤删實際操作四、資料誤删的批量修複實戰(工具)五、版本控制和生命周期結合實作類資源回收筒(成本優化)六、小結

一、背景

阿裡雲對象存儲 OSS 是儲存海量資料的平台,支援豐富的應用。在使用過程中難免會遇到誤操作、程式 Bug、覆寫寫等導緻資料被删除的場景,對于資料的丢失會非常着急,後果也非常嚴重,甚至某些情況下還會影響你的職業生涯。OSS 每年都會遇到多起客戶誤删除資料的事件,為此 OSS 開發了 版本控制 功能,開啟該特性後,可以在誤删除資料時通過曆史版本找回資料。

二、版本控制技術介紹

存儲空間(Bucket)開啟版本控制後,OSS 會為 Bucket 中所有檔案(Object)的每個版本指定唯一的 ID 值,且 Bucket 中現有 Object 的内容、權限保持不變。開啟版本控制後,還能夠防止意外覆寫或者删除 Object ,并允許查詢、恢複 Object 的曆史版本。詳細資訊,請參考

官網

介紹。

快開啟阿裡雲對象存儲 OSS 防誤删新功能--版本控制,保護您珍貴的資料一、背景二、版本控制技術介紹三、資料防誤删實際操作四、資料誤删的批量修複實戰(工具)五、版本控制和生命周期結合實作類資源回收筒(成本優化)六、小結

如上圖所示,通過 PUT 操作第一次上傳同名 Object (key=example.jpg)時,原始 Object 版本(ID=111111)作為曆史版本,生成的新版本(ID=222222)将作為目前版本儲存在存儲空間中。當再次上傳同名 Object 時,原始 Object 版本(包括 ID=111111 以及 ID=222222)将作為曆史版本,而生成的新版本(ID=333333)則作為目前版本儲存在 Bucket 中。

三、資料防誤删實際操作

3.1 開啟版本控制

開啟版本控制有兩種方式:

  • 建立時,選擇開通 版本控制。
  • 建立後,設定 版本控制。
快開啟阿裡雲對象存儲 OSS 防誤删新功能--版本控制,保護您珍貴的資料一、背景二、版本控制技術介紹三、資料防誤删實際操作四、資料誤删的批量修複實戰(工具)五、版本控制和生命周期結合實作類資源回收筒(成本優化)六、小結

是以,通過建立後設定版本控制,可以對存量的OSS資料設定版本控制,有效的保障曆史資料。

3.2 上傳對象

開啟版本控制後,在控制台有 顯示對象的曆史版本 框,選擇該框則可以顯示對象的曆史版本,如下圖所示。

快開啟阿裡雲對象存儲 OSS 防誤删新功能--版本控制,保護您珍貴的資料一、背景二、版本控制技術介紹三、資料防誤删實際操作四、資料誤删的批量修複實戰(工具)五、版本控制和生命周期結合實作類資源回收筒(成本優化)六、小結

通過在控制台上傳同名對象,則會生成多個版本,其中顯示 (最新版本) 的那個對象是最新對象,更新時間 也是最近的時間。

3.3 删除對象

開啟版本控制後,删除對象并不會真正删除,而是插入 删除标記,如下圖所示。

快開啟阿裡雲對象存儲 OSS 防誤删新功能--版本控制,保護您珍貴的資料一、背景二、版本控制技術介紹三、資料防誤删實際操作四、資料誤删的批量修複實戰(工具)五、版本控制和生命周期結合實作類資源回收筒(成本優化)六、小結

删除對象後,如果沒有選擇 顯示對象的曆史版本,則在控制台顯示該檔案不存在,但實際上對象并未删除,是以可以支援後面的恢複操作。

3.4 快捷的恢複資料

由于開通了版本保護,資料曆史版本并未删除,可以采用下圖所示的順序,DIY 恢複資料。第一步,選中 顯示對象的曆史版本,此時可以看到曆史版本,其中顯示 (删除标記) 表示該對象被删除。第二步,删除該 (删除标記) 就可以讓資料在控制台重新可見。第三步,删除标記成功後,最近的版本被恢複為 (最新版本),此時不管是否選中 顯示對象的曆史版本,都可以在控制台看到該對象。

快開啟阿裡雲對象存儲 OSS 防誤删新功能--版本控制,保護您珍貴的資料一、背景二、版本控制技術介紹三、資料防誤删實際操作四、資料誤删的批量修複實戰(工具)五、版本控制和生命周期結合實作類資源回收筒(成本優化)六、小結

是以,開通了版本控制後,可以非常便捷的 DIY 恢複資料,不用再擔心“誤操作、程式 Bug、覆寫寫”等帶來的嚴重影響。

四、資料誤删的批量修複實戰(工具)

OSS 控制台提供了簡單的單對象恢複能力,但是對于删除目錄下的海量檔案,效率就非常低下了,需要頻繁的UI點選,修複速度太慢。是以 OSS 提供了 ossutil 工具,能夠批量修複資料,提高修複效率。

4.1 指定字首批量修複

快開啟阿裡雲對象存儲 OSS 防誤删新功能--版本控制,保護您珍貴的資料一、背景二、版本控制技術介紹三、資料防誤删實際操作四、資料誤删的批量修複實戰(工具)五、版本控制和生命周期結合實作類資源回收筒(成本優化)六、小結

整個過程如上圖,參考指令為:

$) ./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 指定時間批量修複

快開啟阿裡雲對象存儲 OSS 防誤删新功能--版本控制,保護您珍貴的資料一、背景二、版本控制技術介紹三、資料防誤删實際操作四、資料誤删的批量修複實戰(工具)五、版本控制和生命周期結合實作類資源回收筒(成本優化)六、小結

./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 指定修複清單檔案批量修複

快開啟阿裡雲對象存儲 OSS 防誤删新功能--版本控制,保護您珍貴的資料一、背景二、版本控制技術介紹三、資料防誤删實際操作四、資料誤删的批量修複實戰(工具)五、版本控制和生命周期結合實作類資源回收筒(成本優化)六、小結

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

隻需要周遊 修複清單檔案,并删除對象的删除标記,即可恢複對象。

五、版本控制和生命周期結合實作類資源回收筒(成本優化)

設定版本控制後,即使删除對象也會保留曆史版本,這會帶來成本的增加。為了支援版本控制的資料恢複,以及成本優化,設計了 版本控制+生命周期 的組合方案,如下圖所示。

快開啟阿裡雲對象存儲 OSS 防誤删新功能--版本控制,保護您珍貴的資料一、背景二、版本控制技術介紹三、資料防誤删實際操作四、資料誤删的批量修複實戰(工具)五、版本控制和生命周期結合實作類資源回收筒(成本優化)六、小結

在生命周期配置中,針對 目前版本(删除标記) 和 曆史版本 設定政策,可以将其在指定時間後轉換為其他類型進而降低成本,也可以選擇在指定天數(比如30天)之後删除,進而在 30 天内仍然可以恢複資料,類似資源回收筒的保留時長。

六、小結

資料誤删除是非常嚴重的事件,也是難以預防的問題。通過開通對象存儲 OSS 的 版本控制 提供了有效的資料保護方案,封裝 版本控制+生命周期 的資源回收筒也可以幫助更好的優化成本和恢複體驗,希望您能盡快開通,保護您的珍貴資料。