本頁說明如何列出、存取、還原及刪除非現行物件,這通常適用於已啟用物件版本管理功能的值區。
必要的角色
如要取得管理非目前物件所需的權限,請要求管理員授予您專案的「儲存空間物件使用者」(roles/storage.objectUser
) IAM 角色。這個預先定義的角色具備管理非目前物件所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
您或許還可透過自訂角色取得這些權限。
如要瞭解如何授予專案角色,請參閱管理專案存取權。
視用途而定,您可能需要其他權限或替代角色:
如果您打算使用 Google Cloud 控制台執行本頁面上的工作,還需要
storage.buckets.list
權限,但這項權限不包含在 Storage 物件使用者 (roles/storage.objectUser
) 角色中。如要取得這項權限,請要求管理員授予您專案的「Storage 管理員」角色 (roles/storage.admin
)。如果 bucket 已停用統一 bucket 層級存取權,您在下列情況下需要額外權限:
如果您打算連同 ACL 一併傳回非目前物件,則還需要
storage.objects.getIamPolicy
權限,而這項權限不包含在 Storage 物件使用者 (roles/storage.objectUser
) 角色中。如要取得這項權限,請要求管理員授予您專案的「儲存空間物件管理員」角色 (roles/storage.objectAdmin
)。如果您打算重新命名或還原具有 ACL 的非目前物件,您也需要
storage.objects.setIamPolicy
權限,而這項權限不包含在 Storage 物件使用者 (roles/storage.objectUser
) 角色中。如要取得這項權限,請要求管理員授予您專案的「儲存空間物件管理員」角色 (roles/storage.objectAdmin
)。
列出非現行物件版本
如要列出使用中和非現行的物件版本,並查看其generation
編號:
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在值區清單中,按一下包含所需物件的值區名稱。
系統會開啟「Bucket details」(值區詳細資料) 頁面,並選取「Objects」(物件) 分頁標籤。
如要查看非現行物件,請按一下「顯示」下拉式選單,然後選取「現行和非現行物件」。
在物件清單中,按一下要查看版本的物件名稱。
「物件詳細資料」頁面隨即開啟,並選取「即時物件」分頁。
按一下「版本記錄」分頁標籤,即可查看物件的所有版本。
指令列
使用 gcloud storage ls --all-versions
指令:
gcloud storage ls --all-versions gs://BUCKET_NAME
其中 BUCKET_NAME
是包含物件的值區名稱。例如:my-bucket
。
回應類似下列範例:
gs://BUCKET_NAME/OBJECT_NAME1#GENERATION_NUMBER1 gs://BUCKET_NAME/OBJECT_NAME2#GENERATION_NUMBER2 gs://BUCKET_NAME/OBJECT_NAME3#GENERATION_NUMBER3 ...
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱 Cloud Storage C# API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
詳情請參閱 Cloud Storage Go API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
詳情請參閱 Cloud Storage PHP API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
cURL
透過「Objects: list」要求呼叫 JSON API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?versions=true"
其中
BUCKET_NAME
是包含物件的值區名稱。例如:my-bucket
。
物件的非現行版本具有 timeDeleted
屬性。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
cURL
透過GET
值區要求和versions
查詢字串參數呼叫 XML API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?versions&list-type=2"
其中
BUCKET_NAME
是包含物件的值區名稱。例如:my-bucket
。
與不使用 versions
查詢參數相比,使用這個參數時,GET
要求結果會有一些差異。具體而言,當您在要求中包含 versions
查詢參數時,Cloud Storage 會傳回下列資訊:
Version
元素,其中包含每個物件的資訊。DeletedTime
元素,其中包含物件版本成為非現行版本 (刪除或取代) 的時間。- `IsLatest 元素,指示特定物件是否為最新版本。
- 如果值區中有多個物件版本,且只顯示一部分的物件清單時,系統會傳回
NextGenerationMarker
元素。在後續請求的generationmarker
查詢參數中使用此元素的值,以便從上一個點恢復。generationmarker
查詢參數的使用方式,與您使用marker
查詢參數瀏覽未版本化值區清單的方式一樣。
存取非現行物件版本
如要在執行下載物件、查看物件中繼資料或更新物件中繼資料等工作時,使用物件的非目前版本,請按照下列步驟操作:
控制台
Google Cloud 控制台不提供非目前版本的存取權。使用 Google Cloud 控制台時,您只能移動、複製、還原或刪除非目前版本。這些動作是從物件的版本記錄清單執行。
指令列
將非現行版本的代號附加至物件名稱:
OBJECT_NAME#GENERATION_NUMBER
其中:
OBJECT_NAME
是非目前版本的名稱。例如:pets/dog.png
。GENERATION_NUMBER
是非現行版本的產生號碼。例如:1560468815691234
。
使用上一步的字串,按照平常方式處理物件的使用中版本。舉例來說,如要查看非目前物件版本的的中繼資料,請使用
gcloud storage objects describe
指令:gcloud storage objects describe gs://my-bucket/pets/dog.png#1560468815691234
REST API
JSON API
將非現行版本的世代編號附加至物件的 URI:
https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?generation=GENERATION_NUMBER
其中:
BUCKET_NAME
是包含非目前版本的值區名稱。例如:my-bucket
。OBJECT_NAME
是非目前版本的網址編碼名稱。例如pets/dog.png
,網址編碼為pets%2Fdog.png
。GENERATION_NUMBER
是非現行版本的產生號碼。例如:1560468815691234
。
使用上一步的 URI,按照平常方式處理物件的使用中版本。舉例來說,如要查看非目前物件版本的元資料,請使用 cURL 透過 Objects: get 要求呼叫 JSON API:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/my-bucket/o/pets/dog.png?generation=1560468815691234"
XML API
將非現行版本的世代編號附加至物件的 URI:
https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?generation=GENERATION_NUMBER
其中:
BUCKET_NAME
是包含非目前版本的值區名稱。例如:my-bucket
。OBJECT_NAME
是非目前版本的網址編碼名稱。例如pets/dog.png
,網址編碼為pets%2Fdog.png
。GENERATION_NUMBER
是非現行版本的生成編號。例如:1560468815691234
。
使用上一步的 URI,按照平常方式處理物件的使用中版本。舉例來說,如要查看非目前物件版本的相關中繼資料,請使用
cURL
透過HEAD
物件要求呼叫 XML API:curl -I GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/my-bucket/pets/dog.png?generation=1560468815691234"
還原非現行物件版本
在 Cloud Storage 中,還原非現行物件版本是指複製該版本。這麼做會將副本設為使用中版本,有效還原該版本。如果已有使用中的版本,且值區已啟用物件版本管理功能,還原非現行版本會導致原有的使用中版本變成非現行版本。
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在值區清單中,按一下包含所需物件的值區名稱。
系統會開啟「Bucket details」(值區詳細資料) 頁面,並選取「Objects」(物件) 分頁標籤。
如要查看非現行物件,請按一下「顯示」下拉式選單,然後選取「現行和非現行物件」。
在物件清單中,按一下要還原的物件版本名稱。
「物件詳細資料」頁面隨即開啟,並選取「即時物件」分頁。
按一下「版本記錄」分頁標籤。
按一下所需版本的「還原」按鈕。
「還原物件版本」窗格隨即開啟。
按一下「確認」。
指令列
使用 gcloud storage cp
指令:
gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER gs://BUCKET_NAME
其中:
BUCKET_NAME
是包含要還原非目前版本的 bucket 名稱。例如:my-bucket
。OBJECT_NAME
是要還原的非目前版本名稱。例如:pets/dog.png
。GENERATION_NUMBER
是要還原的非現行版本的代號。例如:1560468815691234
。
如果成功,回應會類似以下範例:
Operation completed over 1 objects/58.8 KiB.
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱 Cloud Storage C# API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
詳情請參閱 Cloud Storage Go API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
詳情請參閱 Cloud Storage PHP API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
cURL
透過POST
物件要求呼叫 JSON API:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/rewriteTo/b/BUCKET_NAME/o/OBJECT_NAME?sourceGeneration=GENERATION_NUMBER"
其中:
BUCKET_NAME
是包含要還原非目前版本的 bucket 名稱。例如:my-bucket
。OBJECT_NAME
是您要還原的非目前版本名稱,並經過網址編碼。例如:pets/dog.png
,網址編碼為pets%2Fdog.png
。GENERATION_NUMBER
是要還原的非現行版本代號。例如:1560468815691234
。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
cURL
透過PUT
物件要求呼叫 XML API:curl -X PUT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-copy-source: BUCKET_NAME/OBJECT_NAME" \ -H "x-goog-copy-source-generation:GENERATION_NUMBER" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
其中:
BUCKET_NAME
是包含要還原非目前版本的 bucket 名稱。例如:my-bucket
。OBJECT_NAME
是您要還原的非目前版本名稱,並經過網址編碼。例如:pets/dog.png
,網址編碼為pets%2Fdog.png
。GENERATION_NUMBER
是要還原的非現行版本代號。例如:1560468815691234
。
還原物件版本後,原始的非現行版本仍會保留在值區中。如果不再需要非現行版本,可以隨後刪除,或設定物件生命週期管理,在符合指定條件時移除該版本。
刪除非現行物件版本
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在值區清單中,按一下包含所需物件的值區名稱。
系統會開啟「Bucket details」(值區詳細資料) 頁面,並選取「Objects」(物件) 分頁標籤。
如要查看非現行物件,請按一下「顯示」下拉式選單,然後選取「現行和非現行物件」。
前往物件 (可能位於資料夾中)。
在物件清單中,按一下要刪除版本的物件名稱。
「物件詳細資料」頁面隨即開啟,並選取「即時物件」分頁。
按一下「版本記錄」分頁標籤。
勾選所需版本的核取方塊。
按一下 [Delete] (刪除) 按鈕。
「刪除版本」窗格隨即開啟。
在文字欄位中輸入
delete
,確認要刪除物件。點選「刪除」。
指令列
使用 gcloud storage rm
指令:
gcloud storage rm gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER
其中:
BUCKET_NAME
是包含要刪除非目前版本的 bucket 名稱。例如:my-bucket
。OBJECT_NAME
是要刪除的非目前版本名稱。例如:pets/dog.png
。GENERATION_NUMBER
是要刪除的非目前版本世代編號。例如:1560468815691234
。
如果成功,回應會類似以下範例:
Operation completed over 1 objects.
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱 Cloud Storage C# API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
詳情請參閱 Cloud Storage Go API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
詳情請參閱 Cloud Storage PHP API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
cURL
透過DELETE
物件要求呼叫 JSON API:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?generation=GENERATION_NUMBER"
其中:
BUCKET_NAME
是包含要刪除非目前版本的 bucket 名稱。例如:my-bucket
。OBJECT_NAME
是要刪除的非現行版本名稱,並經過網址編碼。例如:pets/dog.png
,網址編碼為pets%2Fdog.png
。GENERATION_NUMBER
是要刪除的非現行版本代號。例如:1560468815691234
。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
cURL
透過DELETE
物件要求呼叫 XML API:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?generation=GENERATION_NUMBER"
其中:
BUCKET_NAME
是包含要刪除非目前版本的 bucket 名稱。例如:my-bucket
。OBJECT_NAME
是要刪除的非現行版本名稱,並經過網址編碼。例如:pets/dog.png
,網址編碼為pets%2Fdog.png
。GENERATION_NUMBER
是要刪除的非現行版本代號。例如:1560468815691234
。
後續步驟
- 進一步瞭解物件版本管理,包括深入範例。
- 啟用或停用值區的物件版本管理。
- 瞭解如何使用物件生命週期管理功能,自動管理物件版本。