物件版本管理功能會將刪除的物件保留為非現行版本,這些物件仍可存取,直到明確移除為止。這項功能可用於追蹤物件的變更,並還原特定版本的物件。這個頁面將說明這項功能及可用選項。
建議您使用軟刪除,不要使用物件版本控管,以免因意外或惡意刪除而永久遺失資料。如要進一步瞭解何時該使用軟刪除和物件版本管理,請參閱「注意事項」。
簡介
您為值區啟用物件版本管理。啟用後:
只要您未指定使用中版本的生成編號,每當您取代或刪除使用中物件版本,Cloud Storage 就會保留非現行物件版本。
非現行版本會保留物件名稱,但會有一個不重複的產生編號做為識別用途。
只有在明確要求納入非最新版本時,系統才會在要求中顯示這類版本。
如要刪除物件的非現行版本,請在刪除要求中加入產生編號,或使用物件生命週期管理。
在啟用虛刪除功能的值區中,當您刪除非目前物件時,Cloud Storage 會將其狀態變更為虛刪除。虛刪除的物件會在虛刪除保留期限屆滿後永久刪除。
物件的非現行版本與任何使用中版本無關。
如果停用物件版本管理功能:
值區不會再累積物件的新非目前版本。
值區中現有的物件版本不受影響。
注意事項
物件版本數量沒有預設限制。物件的每個非現行版本費率和使用中版本費率都相同。
從值區中移除物件版本時,儲存時間是根據物件新增至值區的時間,而非成為非現行版本的時間。
假如您啟用版本管理功能,不妨一併使用物件生命週期管理;這樣系統就能在指定時間過後,或較新版本不再是現行版本時,移除舊版物件。如需其中一種可能的設定,請參閱刪除物件的生命週期設定範例。
如要判斷是否要在值區中啟用物件版本管理或虛刪除功能,請考量下列幾點:
如要防止資料因意外或惡意刪除而永久遺失,請使用虛刪除功能,而非物件版本管理功能。虛刪除功能會保留所有最近刪除的使用中或非現行物件,提供值區層級的保護。還能防範值區層級的刪除事件。
如果您有特定帳單需求,並已設定物件生命週期管理規則來保留指定數量的非現行版本,請使用物件版本管理。
在這種情況下,您只能獲得部分保護,避免物件遭到誤刪,因為物件版本管理功能無法防範值區層級的事件,或非現行物件遭到不當刪除。
非現行物件可供存取及讀取,而虛刪除的物件會保留在離線狀態,且無法讀取。如要還原已軟刪除的物件,必須具備 特定 IAM 權限,而這類權限適用於 Storage 管理員 (
roles/storage.admin
) IAM 角色。如要存取最近刪除的物件,並高度防範因意外和惡意刪除事件而永久遺失資料,可以在同一個 bucket 中啟用物件版本管理和虛刪除功能。您可以設定物件生命週期管理政策,在特定天數後自動刪除非目前版本,然後使用軟刪除功能提供額外的保護層。
非現行物件中繼資料
物件的非現行版本有自己的中繼資料,可能與現行版本的中繼資料不同。最重要的是,非目前版本會保留其 ACL,而且不一定要具備與使用中版本同樣的權限。
不論是使用中或非現行版本,每個物件都有一組中繼資料,只有最新的中繼產生編號能用來指示中繼資料。您不能以較舊的中繼產生編號存取自其生成之後修改過的中繼資料。
您可以在要求中指定 generation
,藉此更新非目前版本物件的中繼資料。如要維護讀取-修改-寫入語意的完整,您可以使用 metageneration-match 先決條件。一旦使用這項先決條件,在您讀取中繼資料後到傳送更新的這個期間,若您嘗試更新的中繼資料有所變更,就會導致更新失敗。
物件版本管理範例
本例說明一旦您啟用物件版本管理和軟刪除功能,日後取代、更新及刪除檔案時,值區內的 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 值區。這時物件版本管理功能會將現有的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
仍會儲存在您的值區中。- 還原其中一個非現行版本
即使物件版本管理功能已停用,您還是可以複製其中一個現有的非現行版本,有效還原該版本。 完成還原後,值區會有三個版本的
cat.jpg
:兩個非目前版本,以及一個從還原作業取得的使用中版本。- 刪除其中一個非現行版本
您可以手動刪除物件的非現行版本,也可以使用物件生命週期管理功能。
刪除非現行版本
cat.jpg#1360887697105000
時,系統會虛刪除該版本。這個虛刪除物件會保留一段時間,保留時長由 bucket 的虛刪除政策指定。保留期限屆滿後,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 如果值區先前已啟用物件版本管理功能,則可能存在非現行版本。
檔案還原行為
您可以將非現行物件版本有效還原為現行版本。如需逐步操作說明,請參閱「還原非現行物件版本」說明文章。
如果您在物件版本管理功能已啟用的情況下進行這項動作,而值區中還有物件的使用中版本,則 Cloud Storage 將會取代現有的使用中版本,但也會將其保留為新的非現行版本。假如是這樣,您的值區接著就會包含已取代 (現在則是已非現行) 物件,以及兩個先前非現行的物件複本 (分別是使用中及仍為非現行狀態的複本),而這些全部都會產生儲存空間費用。為避免不必要的費用,請刪除您已當做目前使用中複本來用的非現行版本,或設定物件生命週期管理,在非現行物件符合指定條件時將其移除。
後續步驟
- 瞭解如何啟用物件版本管理。
- 使用非現行物件。
- 瞭解產生和元產生物件屬性。
- 瞭解物件生命週期管理,這項功能可自動管理物件版本。
- 請參閱物件生命週期管理範例,瞭解如何搭配使用物件版本管理。