本页面介绍了如何重命名和移动启用了分层命名空间的存储桶中的文件夹。
重命名操作会在单个原子操作中以递归方式重命名文件夹、其子文件夹以及关联的资源(包括对象和托管式文件夹)。
重命名操作是原子操作。操作要么成功完成并将资源移至新路径,要么失败并显示错误。如果发生错误,所有资源都会恢复到原始状态。
在启用了分层命名空间的存储桶中,重命名文件夹仅涉及元数据操作。此操作不会涉及在文件夹中实际移动或复制对象,因此不会产生对象复制费用。
但是,在未启用分层命名空间的存储桶中,文件夹是模拟的。重命名或移动模拟文件夹需要复制和删除其中的每个对象。如果您的文件夹包含许多对象,则重命名过程可能会效率低下且代价高昂。重命名或移动模拟文件夹也是非原子操作,这意味着,如果该过程失败,存储桶可能会处于不一致状态,并且只有部分对象会被移动。
在文件夹重命名过程中,您可以读取和列出要重命名的资源。但是,您无法对受影响的资源运行写入操作。
文件夹重命名操作会对存储桶启动长时间运行的操作。
准备工作
确保您的存储桶启用了分层命名空间。如需详细了解如何为存储桶启用分层命名空间,请参阅创建启用了分层命名空间的存储桶。
所需的角色
如需获得在存储桶中重命名或移动文件夹所需的权限,请让您的管理员为您授予存储桶的 Storage Object User (roles/storage.objectUser
) IAM 角色。
如需详细了解如何授予项目的角色,请参阅管理对项目的访问权限。
如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.folders.rename
- 需要对源文件夹拥有此权限。
storage.folders.create
- 需要对目标文件夹拥有此权限。
您也可以使用其他自定义角色或预定义角色来获取上述权限。如果您需要更宽松的角色,除了重命名文件夹之外还可以管理文件夹,请让您的管理员为您授予以下角色之一:
- Storage Folder Admin (
roles/storage.folderAdmin
) - Storage Object Admin (
roles/storage.objectAdmin
) - Storage Admin (
roles/storage.admin
)
如需查看哪些角色与哪些权限相关联,请参阅适用于 Cloud Storage 的 IAM 角色。
重命名和移动文件夹
控制台
- 在 Trusted Cloud 控制台中,转到 Cloud Storage 存储桶页面。
在存储桶列表中,点击包含您要移动或重命名的文件夹的存储桶的名称。
在存储桶详情页面中,找到您要移动或重命名的文件夹。
如果您要重命名文件夹,请执行以下操作:
点击相应文件夹的
更多操作菜单。点击重命名文件夹。
在出现的叠加窗口中,输入文件夹的新名称。
点击重命名。
如果您要将该文件夹移至其他文件夹,请执行以下操作:
点击相应文件夹的
更多操作菜单。点击移动文件夹。
在出现的叠加窗口中,点击浏览。
选择您要移动的文件夹的目标文件夹。您也可以点击
创建新文件夹,然后选择其作为目标文件夹。点击选择。
点击移动。
如需了解如何在 Trusted Cloud 控制台中获取失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
如需重命名或移动使用分层命名空间的存储桶中的文件夹,请运行 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
是源文件夹的网址编码路径。例如,my-src-folder/
的网址编码为my-src-folder%2F
。DESTINATION_PATH
是目标文件夹的网址编码路径。例如,my-dest-folder/
的网址编码为my-dest-folder%2F
。