物件版本管理功能會將已刪除的物件保留為非現行版本,這些物件仍可存取,直到明確移除為止。這項功能可用於追蹤物件的變更,並復原特定版本的物件。本頁面說明這項功能,以及使用時可用的選項。
建議您使用虛刪除功能,而非物件版本管理,以免資料因意外或惡意刪除而永久遺失。如要進一步瞭解何時應使用虛刪除和物件版本管理功能,請參閱「注意事項」。
簡介
您需要為值區啟用物件版本管理。啟用後:
只要您未指定使用中版本的世代編號,每當您取代或刪除使用中物件版本時,Cloud Storage 就會保留非現行物件版本。
非現行版本會保留物件名稱,但會產生不重複的編號做為識別。
非現行版本只會出現在明確要求納入這些版本的請求中。
如要刪除物件的非現行版本,請在刪除要求中加入產生編號,或使用物件生命週期管理功能。
在啟用虛刪除功能的 bucket 中,刪除非現行物件時,Cloud Storage 會將物件狀態變更為虛刪除。虛刪除的物件會在虛刪除保留期限屆滿後永久刪除。
物件的非現行版本與任何使用中版本各自獨立。
如果停用物件版本管理:
值區不會再累積新的非現行版本物件。
bucket 中現有的物件版本不受影響。
注意事項
物件版本數量預設沒有上限。物件的每個非現行版本都會收費,費率與該版本為使用中版本時相同。
只有在從 bucket 移除物件版本時,才會收取提前刪除費用,版本變成非現行版本時不會收取。從 bucket 移除的版本,其儲存時間長度是根據新增至 bucket 的時間計算,而非成為非現行版本的時間。
如果啟用版本管理功能,建議使用物件生命週期管理,在指定時間長度後移除舊版物件,或在新版本成為非現行版本時移除舊版物件。如需其中一種可能的設定方式,請參閱刪除物件的生命週期設定範例。
如要判斷是否要為 bucket 啟用物件版本管理或虛刪除功能,請考量下列幾點:
如要避免因意外或惡意刪除而導致資料永久遺失,請使用虛刪除功能,而非物件版本管理功能。虛刪除功能會保留所有最近刪除的使用中或非現行物件,提供值區層級的保護。還能防範值區層級的刪除事件。
如果您有特定帳單需求,並已設定物件生命週期管理規則,保留指定數量的非現行版本,請使用物件版本管理功能。
在這種情況下,您只能部分防範意外刪除,因為物件版本管理功能無法防範 bucket 層級事件或不必要的非現行物件刪除。
非現行物件可供存取和讀取,而虛刪除的物件則會保留在離線狀態,且無法讀取。如要還原虛刪除的物件,您必須具備 Storage 管理員 (
roles/storage.admin) IAM 角色可用的特定 IAM 權限。如要存取最近刪除的物件,並高度防範因意外和惡意刪除事件而永久遺失資料,可以在同一個 bucket 啟用物件版本管理和虛刪除功能。您可以設定物件生命週期管理政策,在指定天數後自動刪除非現行版本,然後使用虛刪除功能提供額外保護。
非現行物件中繼資料
非現行版本的物件有自己的中繼資料,可能與現行版本的中繼資料不同。最重要的是,非現行版本會保留 ACL,且不一定與即時版本具有相同權限。
無論是使用中或非現行版本,每個版本都有一組中繼資料,只有最新的中繼資料版本編號會參照中繼資料。舊的中繼資料版本編號無法用於存取已變更的中繼資料。
您可以在要求中指定物件的 generation,更新非現行版本的中繼資料。如要確保安全的讀取-修改-寫入語意,可以使用中繼產生比對前置條件。一旦使用這項先決條件,在您讀取中繼資料後到傳送更新的這個期間,若您嘗試更新的中繼資料有所變更,就會導致更新失敗。
物件版本管理範例
這個範例說明在啟用物件版本管理和虛刪除功能的 bucket 中,當您替換、更新及刪除物件時,物件 cat.jpg 會發生什麼情況。
- 上傳新映像檔
首次上傳
cat.jpg至 Cloud Storage 時,系統會指派generation和metageneration號碼。在這個範例中,版本編號為1360887697105000。由於物件是新的,metageneration編號為1。即使未啟用物件版本管理功能,
cat.jpg也會收到generation和metageneration號碼。您可以查看物件中繼資料,取得這些數字。- 啟用物件版本管理
在這個階段,您可以決定是否要讓值區啟用物件版本管理。啟用這項功能並不會影響
cat.jpg的generation或metageneration號碼。- 變更映像檔的中繼資料
您可以藉由新增自訂中繼資料
color:black來更新cat.jpg的中繼資料。更新中繼資料會使cat.jpg的metageneration值增加,在這種情況下會從1增加到2。但由於物件本身維持不變,因此 Cloud Storage 會繼續只儲存cat.jpg的一個版本,且該版本的generation號碼也還是1360887697105000。- 上傳新版本映像檔
您將新版
cat.jpg上傳至 Cloud Storage bucket。這麼做時,物件版本管理功能會將現有cat.jpg物件移至非現行狀態。非現行版本會保留先前的儲存空間類別和中繼資料。只有在執行版本化列出作業時,才會顯示非現行版本,一般列出指令不會顯示。非目前版本現在會參照:cat.jpg#1360887697105000。與此同時,最新上傳的
cat.jpg就會變成物件的使用中版本。這個新的cat.jpg會取得自己的generation編號,在本範例中為1360887759327000。此外,它也會取得自己的中繼資料和metageneration數量的1,也就是說,除非您指定,否則它不會包含color:black中繼資料。當您存取或修改cat.jpg,時,系統會使用這個版本。您也可以使用generation編號參照這個版本的cat.jpg。舉例來說,使用 Google Cloud CLI 時,您會將其稱為cat.jpg#1360887759327000。- 刪除映像檔的使用中版本
您現在刪除了
cat.jpg。這樣一來,版本編號為1360887759327000的版本就會變成非現行版本。值區現在包含兩個非現行版本的cat.jpg,沒有使用中版本。您仍可使用generation編號參照任一非目前版本,但如果嘗試存取沒有generation編號的cat.jpg,則會失敗。同樣地,值區的一般物件清單也不會將
cat.jpg顯示為值區中的物件之一。如要瞭解如何列出非現行版本的物件,請參閱「列出非現行物件版本」。- 停用物件版本管理
停用物件版本管理功能,物件就不會變成非現行版本。物件的現有非現行版本仍會保留在 Cloud Storage 中。即使停用物件版本管理,
cat.jpg#1360887697105000和cat.jpg#1360887759327000仍會儲存在 bucket 中,直到您刪除為止。- 還原其中一個非現行版本
即使停用物件版本管理功能,您仍可複製現有的非現行版本,有效還原版本。完成後,bucket 中會有三個版本的
cat.jpg:兩個非目前版本,以及還原後產生的現行版本。- 您刪除其中一個非現行版本
您可以手動刪除物件的非目前版本,也可以使用物件生命週期管理功能。
刪除
cat.jpg#1360887697105000非現行版本時,系統會虛刪除該版本。虛刪除的物件會保留一段時間,具體時長取決於值區虛刪除政策指定的保留期限。保留期限屆滿後,Cloud Storage 會永久刪除這個物件的虛刪除版本。- 您還原其中一個虛刪除的物件版本
即使停用物件版本管理功能,您還是可以還原非現行物件的虛刪除版本。系統會還原虛刪除版本的副本,做為具有新物件中繼資料和新建立日期的使用中版本。原始虛刪除的物件也會保留在 bucket 中,並在虛刪除保留期限屆滿後永久刪除。
物件版本管理參考資料
下表列出對物件版本管理功能採取特定動作時,會發生的情況。
| 物件版本管理狀態 | 虛刪除狀態 | 動作 | 結果 |
|---|---|---|---|
| 已停用 | 已停用 | ||
刪除 dog.png。 |
dog.png已永久刪除。 |
||
指定版本編號,刪除 dog.png 的非現行版本。1 |
非現行版本會永久刪除。 | ||
將 dog.png 替換成新版本。 |
新版本會取代使用中版本,並獲得新的版本編號。舊的使用中版本會永久刪除。 | ||
將非現行版本的 dog.png 複製到現行版本。1 |
非現行版本的副本會取代使用中版本,並取得新的版本編號。舊的使用中版本會永久刪除。 | ||
| 已停用 | 已啟用 | ||
刪除 dog.png。 |
「dog.png」已虛刪除。 |
||
指定版本編號,刪除 dog.png 的非現行版本。1 |
系統會虛刪除非現行版本。 | ||
將 dog.png 替換為新版本。 |
新版本會取代使用中版本,並取得新的版本編號。舊的使用中版本會虛刪除。 | ||
將非現行版本的 dog.png 複製到現行版本。1 |
非現行版本的副本會取代使用中版本,並取得新的版本編號。舊的使用中版本會虛刪除。 | ||
| 已啟用 | 已停用 | ||
刪除 dog.png 的即時版本,但不指定版本編號。 |
使用中版本會變成非現行版本,並保留相同的版本編號。 | ||
指定版本編號,刪除 dog.png 的即時版本。 |
使用中的版本會永久刪除。 | ||
指定版本編號,刪除 dog.png 的非現行版本。 |
非現行版本會永久刪除。 | ||
將 dog.png 替換成新版本。 |
新版本會取代正式版,並獲得新的世代編號。舊的使用中版本會變成非現行版本,並保留相同的代號。 | ||
將非現行版本的 dog.png 複製到現行版本。 |
非現行版本的副本會取代使用中版本,並取得新的版本編號。舊的使用中版本會變成非現行版本,並保留相同的代號。 | ||
| 已啟用 | 已啟用 | ||
刪除 dog.png 的即時版本,但不指定版本編號。 |
使用中版本會變成非現行版本,並保留相同的版本編號。 | ||
指定版本編號,刪除 dog.png 的現行版本。 |
使用中的版本會虛刪除。 | ||
指定版本編號,刪除 dog.png 的非現行版本。 |
系統會虛刪除非現行版本。 | ||
將 dog.png 替換為新版本。 |
新版本會取代正式版,並獲得新的世代編號。舊的使用中版本會變成非現行版本,並保留相同的代號。 | ||
將非現行版本的 dog.png 複製到現行版本。 |
非現行版本副本會取代使用中版本,並獲得新的生成編號。舊的使用中版本會變成非現行版本,並保留相同的版本編號。 |
1 如果 bucket 先前已啟用物件版本管理功能,則可能存在非現行版本。
還原行為
您可以將非現行物件版本有效還原為現行使用中版本。如需逐步指南,請參閱「還原非現行物件版本」。
在啟用物件版本管理功能的情況下執行這項操作時,如果 bucket 中已有使用中的物件版本,Cloud Storage 會取代現有的使用中版本,但也會將其保留為新的非現行版本。在這種情況下,值區隨後會包含已取代的物件 (現在為非現行版本),以及先前非現行物件的兩個副本 (一個是現行副本,另一個仍為非現行副本),這些都會產生儲存空間費用。為避免產生不必要的費用,請刪除用於建立目前即時副本的非現行版本,或設定物件生命週期管理,在非現行物件符合指定條件時移除。
後續步驟
- 瞭解如何啟用物件版本管理。
- 處理非現行物件。
- 瞭解 generation 和 metageneration 物件屬性。
- 瞭解物件生命週期管理,這項功能可自動管理物件版本。
- 查看與物件版本管理搭配使用的物件生命週期管理範例。