本頁說明如何重新命名及移動已啟用階層式命名空間的值區中的資料夾。
重新命名作業會以遞迴方式重新命名資料夾、子資料夾和相關聯的資源,包括物件和受管理資料夾,且這項作業是不可分割的單一動作。
重新命名作業是不可部分完成的作業。作業會順利完成,並將資源移至新路徑,或因發生錯誤而失敗。如果發生錯誤,所有資源都會還原至原始狀態。
在啟用階層命名空間的 bucket 中,重新命名資料夾是僅限中繼資料的作業。這項作業不會實際移動或複製資料夾中的物件,因此不會產生物件複製費用。
不過,如果 bucket 未啟用階層命名空間,系統會模擬資料夾。如要重新命名或移動模擬資料夾,必須複製並刪除其中的每個物件。如果資料夾包含許多物件,重新命名程序可能會效率不彰且成本高昂。重新命名或移動模擬資料夾也不是不可分割的操作,也就是說,如果程序失敗,儲存空間可能會處於不一致的狀態,只有部分物件會移動。
在資料夾重新命名過程中,您可以讀取及列出要重新命名的資源。 不過,您無法對受影響的資源執行寫入作業。
資料夾重新命名作業會啟動 bucket 的長期執行作業。
事前準備
確認 bucket 已啟用階層命名空間。如需在 bucket 上啟用階層式命名空間的詳細操作說明,請參閱「建立已啟用階層式命名空間的 bucket」。
必要的角色
如要取得在值區中重新命名或移動資料夾所需的權限,請要求管理員為您授予值區的「Storage 物件使用者」(roles/storage.objectUser) IAM 角色。
如要進一步瞭解如何授予專案角色,請參閱管理專案存取權。
如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
storage.folders.rename- 來源資料夾需要這項權限。
storage.folders.create- 目的地資料夾必須具備這項權限。
您也可以透過其他自訂角色或預先定義的角色取得上述權限。如要取得更寬鬆的權限,除了重新命名資料夾,還能管理資料夾,請管理員授予下列其中一個角色:
- Storage 資料夾管理員 (
roles/storage.folderAdmin) - Storage 物件管理員 (
roles/storage.objectAdmin) - Storage 管理員 (
roles/storage.admin)
如要查看哪些角色與哪些權限相關聯,請參閱「Cloud Storage 的 IAM 角色」。
重新命名及移動資料夾
控制台
- 在 Cloud de Confiance 控制台,前往「Cloud Storage bucket」頁面。
在值區清單中,按一下包含要移動或重新命名資料夾的值區名稱。
在「Bucket details」(值區詳細資料) 頁面中,找出要移動或重新命名的資料夾。
如要重新命名資料夾,請按照下列步驟操作:
按一下資料夾的「更多動作」選單。
按一下「重新命名資料夾」。
在出現的重疊視窗中,為資料夾輸入新名稱。
按一下 [重新命名]。
如要將資料夾移至其他資料夾,請按照下列步驟操作:
按一下資料夾的「更多動作」選單。
按一下「移動資料夾」。
在出現的重疊視窗中,按一下 [Browse] (瀏覽)。
選取要移動資料夾的目標資料夾。您也可以按一下 建立新資料夾,再選取做為目的地資料夾。
按一下「選取」。
按一下 [移動]。
如要瞭解如何透過 Cloud de Confiance 控制台取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。
指令列
如要重新命名或移動 bucket 中階層式命名空間內的資料夾,請執行 gcloud storage mv 指令:
gcloud storage mv gs://BUCKET_NAME/FOLDER1 gs://BUCKET_NAME/FOLDER2
其中:
BUCKET_NAME是包含要重新命名或移動資料夾的值區名稱。例如:my-bucket。FOLDER1是要重新命名或移動的原始資料夾名稱。例如:my-src-folder。FOLDER2是目的地資料夾的新名稱。例如,my-dest-folder。如果新名稱與現有資料夾的名稱相同,系統會將原始資料夾移至現有資料夾中,成為子資料夾。舉例來說,如果將my-dest-folder重新命名為my-dest-folder1(且my-dest-folder1已存在),結果會是my-dest-folder1/my-dest-folder/。如果選擇的新名稱不存在,系統會將原始資料夾重新命名為新名稱。
回應類似下列範例:
Copying gs://my-bucket/my-src-folder to gs://my-bucket/my-dest-folder...
用戶端程式庫
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。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL透過重新命名資料夾的要求呼叫 JSON API:curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/folders/SOURCE_PATH/renameTo/folders/DESTINATION_PATH"
其中:
BUCKET_NAME是包含要重新命名或移動資料夾的值區名稱。例如:my-bucket。SOURCE_PATH是來源資料夾的 URL 編碼路徑。舉例來說,my-src-folder/經過網址編碼後會變成my-src-folder%2F。DESTINATION_PATH是經過網址編碼的目標資料夾路徑。舉例來說,my-dest-folder/經過網址編碼後會變成my-dest-folder%2F。