创建存储分区时,您将永久定义其名称、地理位置以及所属的项目。不过,您可以有效移动或重命名您的存储分区:
如果旧的存储分区中没有数据,只需删除存储分区,然后使用新名称、在新位置或者新项目中重新创建一个存储分区即可。
如果旧的存储分区中有数据,请使用所需的名称、位置和/或项目创建一个新的存储分区,然后将旧存储分区中的数据复制到新的存储分区,再删除旧存储分区及其中的内容。以下步骤对此过程进行了说明。
如果您希望新存储分区与旧存储分区具有相同的名称,则必须将数据临时移至其他名称的存储分区。这样,您就可以删除原始存储分区,以便重复使用存储分区名称。
在位置之间移动数据会产生网络使用费。此外,如果要移动的数据是 Nearline 存储空间、Coldline 存储空间或 Archive 存储空间对象,则在存储桶之间移动数据可能会产生检索费用和提前删除费用。
前提条件
前提条件因所使用的工具而异:
控制台
如需使用 Google Cloud Console 完成本指南,您必须拥有适当的 IAM 权限。如果要访问的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
如需查看特定操作所需权限的列表,请参阅 Google Cloud Console 的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
命令行
为使用命令行实用程序完成本指南,您必须拥有适当的 IAM 权限。如果要访问的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
如需查看特定操作所需权限的列表,请参阅 gsutil 命令的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
REST API
JSON API
如需使用 JSON API 完成本指南,您必须拥有适当的 IAM 权限。如果要访问的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
如需查看特定操作所需的权限列表,请参阅 JSON 方法的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
将数据从一个存储桶移到另一个存储桶
控制台
使用 Google Cloud Console 中的 Cloud Storage Transfer Service:
- 如果您还没有目标存储分区,请创建该存储分区。
- 在 Google Cloud Console 中打开“转移”页面。
- 点击创建转移作业。
按照分步演示操作,在完成每个步骤后点击下一步:
选择来源:使用 Google Cloud Storage 存储桶作为来源类型,直接输入所需存储桶的名称,或点击浏览查找并选择您需要的存储桶。
选择目标位置:直接输入所需存储桶的名称,或点击浏览查找并选择您需要的存储桶。
选择设置:选择转移后删除来源位置的文件选项。
时间安排选项:您可以忽略此部分。
完成分步演示后,点击创建。
然后系统会开始将旧存储分区中的对象复制到新存储分区中。此过程可能需要一些时间;但是,点击创建后,您可以离开 Google Cloud Console。
如需查看转移进度,请在 Google Cloud Console 中打开“转移”页面。
如需了解如何获取有关 Cloud Storage 浏览器中失败操作的详细错误信息,请参阅问题排查。
如果您在设置过程中选择了在转移完成后删除来源对象复选框,则在转移操作完成后,无需执行任何操作来删除旧存储分区中的对象。但是,您可能还想删除旧的存储分区,此操作必须单独执行。
命令行
gcloud
- 如果您还没有目标存储分区,请创建一个目标存储分区。
使用带有
--recursive
选项的gcloud alpha storage cp
命令,以递归方式将所有对象从源存储分区复制到目标存储分区中。gcloud alpha storage cp --recursive gs://SOURCE_BUCKET/* gs://DESTINATION_BUCKET
其中:
SOURCE_BUCKET
是原始存储分区的名称,例如old-bucket
。DESTINATION_BUCKET
是您要向其中移动数据的存储分区的名称,例如my-bucket
。
使用带有
--recursive
选项的gcloud alpha storage rm
命令,以递归方式从源存储分区删除您的所有对象,并删除源存储分区本身:gcloud alpha storage rm --recursive gs://SOURCE_BUCKET
其中
SOURCE_BUCKET
是原始存储分区的名称,例如old-bucket
。或者,如需删除对象但保留源存储分区,请运行以下命令:
gcloud alpha storage rm --all-versions gs://SOURCE_BUCKET/**
gsutil
如果您还没有目标存储分区,请创建该存储分区。
使用带有
-r
选项的gsutil cp
命令,以递归方式将所有对象从源存储分区复制到目标存储分区中。gsutil cp -r gs://SOURCE_BUCKET/* gs://DESTINATION_BUCKET
其中:
SOURCE_BUCKET
是原始存储分区的名称,例如old-bucket
。DESTINATION_BUCKET
是您要向其中移动数据的存储分区的名称,例如my-bucket
。
使用带有
-r
选项的gsutil rm
命令,以递归方式从源存储分区删除您的所有对象,并删除源存储分区本身:gsutil rm -r gs://SOURCE_BUCKET
其中
SOURCE_BUCKET
是原始存储分区的名称,例如old-bucket
。或者,如需删除对象但保留源存储分区,请运行以下命令:
gsutil rm -a gs://SOURCE_BUCKET/**
REST API
JSON API
如果您还没有目标存储分区,请创建该存储分区。
将源存储分区中的每个对象复制到目标存储分区。
XML API
如果您还没有目标存储分区,请创建该存储分区。
将源存储分区中的每个对象复制到目标存储分区。
后续步骤
- 复制、重命名或移动个别对象。
- 了解可用存储分区位置和存储分区命名准则。
- 详细了解如何使用控制台创建和管理数据转移作业。
- 探索存储桶移动工具,这是一种非官方工具,可以更轻松地移动存储桶。
- 详细了解 Cloud Storage 中的文件夹和平面命名空间。