本頁面說明如何列出、存取、還原及刪除非現行物件,這類物件通常適用於已啟用物件版本管理功能的值區。
必要的角色
如要取得管理非目前物件所需的權限,請要求管理員為您授予專案的「儲存空間物件使用者」(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
) 角色並未包含這項權限。如要取得這項權限,請要求管理員為您授予專案的「儲存空間管理員」(roles/storage.admin
) 角色。如果您的值區已停用統一值區層級存取權,則在下列情況下需要額外權限:
如果您打算傳回非最新物件及其 ACL,也需要
storage.objects.getIamPolicy
權限,但該權限並未包含在儲存空間物件使用者 (roles/storage.objectUser
) 角色中。如要取得這項權限,請要求管理員為您授予專案的儲存空間物件管理員 (roles/storage.objectAdmin
) 角色。如果您打算重新命名或還原具有 ACL 的非最新物件,還需要
storage.objects.setIamPolicy
權限,但 Storage 物件使用者 (roles/storage.objectUser
) 角色並未提供這項權限。如要取得這項權限,請要求管理員為您授予專案的儲存空間物件管理員 (roles/storage.objectAdmin
) 角色。
列出非現行物件版本
如要列出使用中和非現行的物件版本,並查看其 generation
編號:
控制台
- 在 Google Cloud 控制台,前往 Cloud Storage「Buckets」頁面。
在值區清單中,按一下包含所需物件的值區名稱。
「Bucket details」頁面隨即開啟,並選取「Objects」分頁標籤。
如要查看非現行物件,請按一下「顯示」下拉式選單,然後選取「現行和非現行物件」。
在物件清單中,按一下要查看版本的物件名稱。
「Object details」頁面隨即開啟,並選取「Live Object」分頁。
按一下「版本記錄」分頁標籤,即可查看物件的所有版本。
指令列
使用 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
使用
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
使用
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 主控台時,您只能移動、複製、還原或刪除非最新版本。這些動作會透過物件的版本記錄清單執行。
指令列
將非目前版本的generation 編號附加到物件名稱:
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
將非現行版本的generation 編號附加至物件的 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
將非現行版本的generation 編號附加至物件的 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「Buckets」頁面。
在值區清單中,按一下包含所需物件的值區名稱。
「Bucket details」頁面隨即開啟,並選取「Objects」分頁標籤。
如要查看非現行物件,請按一下「顯示」下拉式選單,然後選取「現行和非現行物件」。
在物件清單中,按一下要還原的物件版本名稱。
「Object details」頁面隨即開啟,並選取「Live Object」分頁。
按一下「版本記錄」分頁標籤。
按一下所需版本的「Restore」按鈕。
系統會開啟「還原物件版本」窗格。
按一下「確認」。
指令列
使用 gcloud storage cp
指令:
gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER gs://BUCKET_NAME
其中:
BUCKET_NAME
是包含要還原的非最新版本的值區名稱。例如: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
使用
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
是包含要還原的非最新版本的值區名稱。例如:my-bucket
。OBJECT_NAME
是您要還原的非目前版本的網址編碼名稱。例如pets/dog.png
,網址編碼為pets%2Fdog.png
。GENERATION_NUMBER
是您要還原的非現行版本的世代編號。例如:1560468815691234
。
XML API
使用
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
是包含要還原的非最新版本的值區名稱。例如:my-bucket
。OBJECT_NAME
是您要還原的非目前版本的網址編碼名稱。例如pets/dog.png
,網址編碼為pets%2Fdog.png
。GENERATION_NUMBER
是您要還原的非現行版本的世代編號。例如:1560468815691234
。
還原物件版本後,原始的非現行版本仍會保留在值區中。如果您不再需要非現行版本,可以隨後刪除該版本,或是設定物件生命週期管理,在符合您指定條件時移除該版本。
刪除非現行物件版本
控制台
- 在 Google Cloud 控制台,前往 Cloud Storage「Buckets」頁面。
在值區清單中,按一下包含所需物件的值區名稱。
「Bucket details」頁面隨即開啟,並選取「Objects」分頁標籤。
如要查看非現行物件,請按一下「顯示」下拉式選單,然後選取「現行和非現行物件」。
前往物件所在位置,該物件可能位於資料夾中。
在物件清單中,按一下要刪除版本的物件名稱。
「Object details」(物件詳細資料) 頁面隨即開啟,並選取「Live Object」分頁。
按一下「版本記錄」分頁標籤。
勾選所需版本的核取方塊。
按一下 [Delete] (刪除) 按鈕。
系統會開啟「刪除版本」窗格。
在文字欄位中輸入
delete
,確認要刪除物件。點選「刪除」。
指令列
使用 gcloud storage rm
指令:
gcloud storage rm gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER
其中:
BUCKET_NAME
是包含要刪除的非最新版本的值區名稱。例如: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
使用
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
是包含要刪除的非最新版本的值區名稱。例如:my-bucket
。OBJECT_NAME
是您要刪除的非目前版本的網址編碼名稱。例如pets/dog.png
,網址編碼為pets%2Fdog.png
。GENERATION_NUMBER
是您要刪除的非現行版本的世代編號。例如:1560468815691234
。
XML API
使用
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
是包含要刪除的非最新版本的值區名稱。例如:my-bucket
。OBJECT_NAME
是您要刪除的非目前版本的網址編碼名稱。例如pets/dog.png
,網址編碼為pets%2Fdog.png
。GENERATION_NUMBER
是您要刪除的非現行版本的世代編號。例如:1560468815691234
。
後續步驟
- 進一步瞭解物件版本管理,包括深入範例。
- 啟用或停用值區的物件版本管理功能。
- 瞭解如何使用物件生命週期管理功能,自動管理物件版本。