物件版本管理

設定 使用方式

物件版本管理功能會將刪除的物件保留為非現行版本,這些物件仍可存取,直到明確移除為止。這項功能可用於追蹤物件的變更,並還原特定版本的物件。這個頁面將說明這項功能及可用選項。

建議您使用軟刪除,不要使用物件版本控管,以免因意外或惡意刪除而永久遺失資料。如要進一步瞭解何時該使用軟刪除和物件版本管理,請參閱「注意事項」。

簡介

您為值區啟用物件版本管理。啟用後:

  • 只要您未指定使用中版本的生成編號,每當您取代或刪除使用中物件版本,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 也會收到 generationmetageneration 號碼。您可以查看物件中繼資料來取得這些號碼。

啟用物件版本管理

在這個階段,您可以決定是否要讓值區啟用物件版本管理。啟用這項功能並不會影響 cat.jpggenerationmetageneration號碼。

變更映像檔的中繼資料

您可以藉由新增自訂中繼資料 color:black 來更新 cat.jpg 的中繼資料。更新中繼資料會使 cat.jpgmetageneration 值增加,在這種情況下會從 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#1360887697105000cat.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 將會取代現有的使用中版本,但也會將其保留為新的非現行版本。假如是這樣,您的值區接著就會包含已取代 (現在則是已非現行) 物件,以及兩個先前非現行的物件複本 (分別是使用中及仍為非現行狀態的複本),而這些全部都會產生儲存空間費用。為避免不必要的費用,請刪除您已當做目前使用中複本來用的非現行版本,或設定物件生命週期管理,在非現行物件符合指定條件時將其移除。

後續步驟