本頁面說明如何複製、重新命名及移動物件。有些工具會執行原子物件移動作業,其他工具則會將物件複製到新的指定位置,然後刪除原始物件,藉此模擬物件移動作業。
- 如需複製物件的操作說明,請參閱「複製物件」。
- 如需透過複製來移動或重新命名物件的操作說明,請參閱「透過複製來移動或重新命名物件」。
- 如要瞭解如何以不可分割的方式重新命名物件,請參閱「以不可分割的方式重新命名物件」。
事前準備
如要複製、重新命名或移動物件,您必須取得必要的 IAM 角色。以下各節說明不同用途的 IAM 需求。
複製物件 (包括透過複製移動或重新命名)
如要取得複製物件所需的權限,請要求管理員在下列位置授予您 IAM 角色:包含要移動物件的來源 bucket,或要移動物件的目的地 bucket:
- 來源 bucket 的 Storage 物件檢視者 (
roles/storage.objectViewer) - 目標值區的 Storage 物件使用者 (
roles/storage.objectUser) -
如要使用 Cloud de Confiance 控制台複製物件,您必須在來源 bucket 和目的地 bucket 中具備「檢視者」基本角色 (
roles/viewer),此外還需要roles/storage.objectViewer和roles/storage.objectUser。
這些預先定義的角色具備複製物件所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要複製物件,必須具備下列權限:
-
storage.objects.get來源 bucket -
目的地 bucket 的
storage.objects.create -
storage.objects.delete(只有在物件複製或移動作業中,您要取代或覆寫目的地 bucket 中的物件時,才需要這個選項) 目的地 bucket -
storage.objects.delete(只有在使用基礎複製和刪除作業移動物件時才需要) 來源 bucket -
storage.folders.create(只有在要移動的物件位於您要在目的地 bucket 中建立的資料夾時,才需要此參數) 目的地 bucket -
storage.objects.list(只有在使用 Cloud de Confiance 控制台複製、移動或重新命名物件時才需要) (來源和目的地 bucket) -
storage.buckets.list(只有在使用 Cloud de Confiance 控制台複製、移動或重新命名物件時才需要) ,適用於包含來源和目的地 bucket 的專案
您也可以透過自訂角色取得這些權限。
如要瞭解如何授予 bucket 角色,請參閱「在 bucket 上設定及管理 IAM 政策」。如要瞭解如何授予專案角色,請參閱「管理專案存取權」。
如果想複製的物件已啟用特定功能,您可能需要其他或替代角色。舉例來說,如果您要複製的物件具有您想保留的物件保留設定,則目的地值區的角色必須包含 storage.objects.setRetention 權限,例如 Storage 物件管理員 (roles/storage.objectAdmin) 角色。詳情請參閱「Cloud Storage 的 IAM 權限」。
以原子方式重新命名物件
如要取得不可分割地重新命名物件所需的權限,請要求管理員針對包含要重新命名物件的 bucket,授予您 Storage 物件使用者 (roles/storage.objectUser) IAM 角色。
這個預先定義的角色具備以原子方式重新命名物件所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
必須具備下列權限,才能自動重新命名物件:
-
storage.objects.move -
storage.objects.create -
storage.objects.delete(只有在覆寫或取代物件時才需要)
您也可以透過自訂角色取得這些權限。
如要瞭解如何授予 bucket 角色,請參閱「在 bucket 上設定及管理 IAM 政策」。
複製物件
本節說明如何複製物件。您可以將物件從一個 bucket 複製到另一個 bucket。
控制台
- 前往 Cloud de Confiance 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,點選含有要複製物件的 bucket 名稱。
系統會開啟「Bucket details」(值區詳細資料) 頁面,並選取「Objects」(物件) 分頁標籤。
前往該物件 (可能位於資料夾中)。
按一下與物件相關的物件溢位選單 (more_vert)。
點選「複製」。
系統會顯示「複製物件」窗格。
在「Destination」(目的地) 欄位中,輸入目的地 bucket 的名稱和複製物件的名稱。
您也可以按一下「Browse」(瀏覽) 來選取目的地,但瀏覽選項僅限於目前專案中的 bucket。
點選「複製」。
如要瞭解如何在 Cloud de Confiance 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。
指令列
使用 gcloud storage cp 指令:
gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/NAME_OF_COPY
其中:
SOURCE_BUCKET_NAME是要複製物件的 bucket 名稱。例如:my-bucket。SOURCE_OBJECT_NAME是要複製的物件名稱。例如:pets/dog.png。DESTINATION_BUCKET_NAME是要複製物件的 bucket 名稱。例如:another-bucket。NAME_OF_COPY是您要為物件副本指定的名稱。例如:shiba.png。
如果成功,回應會與下列範例類似:
Copying gs://example-bucket/file.txt to gs://other-bucket/file-copy.txt Completed files 1/1 | 164.3kiB/164.3kiB
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
C#
詳情請參閱「Cloud Storage C# API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
詳情請參閱「Cloud Storage Node.js API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
詳情請參閱「Cloud Storage PHP API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Rust
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL呼叫 JSON API,並發出POST物件要求:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ "https://storage.s3nsapis.fr/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/NAME_OF_COPY"
其中:
SOURCE_BUCKET_NAME是要複製物件的 bucket 名稱。例如:my-bucket。SOURCE_OBJECT_NAME是要複製的物件名稱,採用網址編碼格式。例如pets/dog.png,網址編碼為pets%2Fdog.png。DESTINATION_BUCKET_NAME是要複製物件的 bucket 名稱。例如:another-bucket。NAME_OF_COPY是您要為物件副本指定的網址編碼名稱。例如:shiba.png。
由於
rewrite方法會以有限大小的區塊複製資料,因此複製作業可能需要多個要求,尤其是大型物件。舉例來說,以下是
rewrite要求的相關回應,指出您需要提出額外的rewrite要求:{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 1048576, "objectSize": 10000000000, "done": false, "rewriteToken": TOKEN_VALUE }在後續要求中使用
rewriteToken以繼續複製資料:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ -d '{"rewriteToken": "TOKEN_VALUE"}' \ "https://storage.s3nsapis.fr/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/NAME_OF_COPY"其中:
TOKEN_VALUE是前一個要求傳回的rewriteToken值。- 其他值則與先前要求中使用的值相同。
物件完全複製後,最後一個回應的
done屬性會設為true,沒有rewriteToken屬性,且副本的中繼資料會包含在resource屬性中。{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 10000000000, "objectSize": 10000000000, "done": true, "resource": objects Resource }
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: SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME" \ "https://storage.s3nsapis.fr/DESTINATION_BUCKET_NAME/NAME_OF_COPY"
其中:
SOURCE_BUCKET_NAME是要複製物件的 bucket 名稱。例如:my-bucket。SOURCE_OBJECT_NAME是要複製的物件名稱。例如:pets/dog.png。DESTINATION_BUCKET_NAME是要複製物件的 bucket 名稱。例如:another-bucket。NAME_OF_COPY是要為物件副本指定的網址編碼名稱。例如:shiba.png。
透過複製移動或重新命名物件
本節說明如何使用基礎物件複製作業,移動或重新命名物件。本節所述的工具會將原始物件複製到其他命名空間,然後刪除原始物件,藉此執行物件移動和重新命名作業。
控制台
- 前往 Cloud de Confiance 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,點選含有要移動物件的 bucket 名稱。
系統會開啟「Bucket details」(值區詳細資料) 頁面,並選取「Objects」(物件) 分頁標籤。
前往該物件 (可能位於資料夾中)。
按一下與物件相關聯的「Object overflow」(物件溢位) 選單 (more_vert)。
如要為同一個 bucket 中的物件指定新名稱,請按一下「Rename」(重新命名)。
在出現的重疊視窗中,為物件輸入新名稱。
按一下 [重新命名]。
如要將物件移至其他 bucket,請按一下「Move」(移動)。
在出現的重疊視窗中,按一下 [Browse] (瀏覽)。
選取要移動的物件目的地。
按一下「選取」。
按一下 [移動]。
如要瞭解如何在 Cloud de Confiance 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。
指令列
使用 gcloud storage mv 指令:
gcloud storage mv gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME
其中:
SOURCE_BUCKET_NAME是 bucket 的名稱,其中包含您要移動或重新命名的物件。例如:my-bucket。SOURCE_OBJECT_NAME是要移動或重新命名的物件名稱。例如:pets/dog.png。DESTINATION_BUCKET_NAME是要將物件移至的 bucket 名稱。例如:another-bucket。DESTINATION_OBJECT_NAME是指物件在移動或重新命名後要使用的名稱。例如:shiba.png。
如果成功,回應會與下列範例相似:
Copying gs://example-bucket/old-file.txt to gs://new-bucket/new-file.txt Removing gs://example-bucket/old-file.txt... Completed files 1/1 | 164.3kiB/164.3kiB
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
詳情請參閱「Cloud Storage Go API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
詳情請參閱「Cloud Storage Java API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
詳情請參閱「Cloud Storage Python API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
詳情請參閱「Cloud Storage Ruby API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Rust
REST API
以不可分割的方式重新命名物件
本節說明如何以不可分割的方式重新命名 bucket 中的物件。如要重新命名物件,可以使用 Cloud Storage JSON API 中的 Objects: move 方法。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL來透過Objects: move要求呼叫呼叫 JSON API:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/o/SOURCE_OBJECT_NAME/moveTo/o/DESTINATION_OBJECT_NAME"
其中:
BUCKET_NAME是 bucket 的名稱,其中包含要重新命名的物件。例如:my-bucket。SOURCE_OBJECT_NAME是要重新命名的物件名稱,以網址編碼。例如,pets/dog.png,網址編碼為pets%2Fdog.png。DESTINATION_OBJECT_NAME是您要使用的網址編碼名稱。例如pets/cat.png,網址編碼為pets%2Fcat.png。
後續步驟
- 變更物件的儲存空間級別。
- 編輯物件的中繼資料。
- 將物件和值區設為可供公開存取。
- 進一步瞭解物件命名規定。
- 瞭解如何使用要求前置條件,避免競爭狀況。