移动和重命名桶

创建存储分区时,您将永久定义其名称、地理位置以及所属的项目。不过,您可以有效移动或重命名您的存储分区:

  • 如果旧的存储分区中没有数据,只需删除存储分区,然后使用新名称、在新位置或者新项目中重新创建一个存储分区即可。

  • 如果旧的存储分区中有数据,请使用所需的名称、位置和/或项目创建一个新的存储分区,然后将旧存储分区中的数据复制到新的存储分区,再删除旧存储分区及其中的内容。以下步骤对此过程进行了说明。

    • 如果您希望新存储分区与旧存储分区具有相同的名称,则必须将数据临时移至其他名称的存储分区。这样,您就可以删除原始存储分区,以便重复使用存储分区名称

    • 在位置之间移动数据会产生网络使用费。此外,如果要移动的数据是 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

  1. 如果您还没有目标存储分区,请创建该存储分区
  2. 在 Google Cloud Console 中打开“转移”页面。

    打开转移页面

  3. 点击创建转移作业
  4. 按照分步演示操作,在完成每个步骤后点击下一步

    • 选择来源:使用 Google Cloud Storage 存储桶作为来源类型,直接输入所需存储桶的名称,或点击浏览查找并选择您需要的存储桶。

    • 选择目标位置:直接输入所需存储桶的名称,或点击浏览查找并选择您需要的存储桶。

    • 选择设置:选择转移后删除来源位置的文件选项。

    • 时间安排选项:您可以忽略此部分。

  5. 完成分步演示后,点击创建

    然后系统会开始将旧存储分区中的对象复制到新存储分区中。此过程可能需要一些时间;但是,点击创建后,您可以离开 Google Cloud Console。

    如需查看转移进度,请在 Google Cloud Console 中打开“转移”页面。

    打开转移页面

    如需了解如何获取有关 Cloud Storage 浏览器中失败操作的详细错误信息,请参阅问题排查

  6. 如果您在设置过程中选择了在转移完成后删除来源对象复选框,则在转移操作完成后,无需执行任何操作来删除旧存储分区中的对象。但是,您可能还想删除旧的存储分区,此操作必须单独执行。

命令行

gcloud

  1. 如果您还没有目标存储分区,请创建一个目标存储分区
  2. 使用带有 --recursive 选项的 gcloud alpha storage cp 命令,以递归方式将所有对象从源存储分区复制到目标存储分区中。

    gcloud alpha storage cp --recursive gs://SOURCE_BUCKET/* gs://DESTINATION_BUCKET

    其中:

    • SOURCE_BUCKET 是原始存储分区的名称,例如 old-bucket
    • DESTINATION_BUCKET 是您要向其中移动数据的存储分区的名称,例如 my-bucket
  3. 使用带有 --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

  1. 如果您还没有目标存储分区,请创建该存储分区

  2. 使用带有 -r 选项的 gsutil cp 命令,以递归方式将所有对象从源存储分区复制到目标存储分区中。

    gsutil cp -r gs://SOURCE_BUCKET/* gs://DESTINATION_BUCKET

    其中:

    • SOURCE_BUCKET 是原始存储分区的名称,例如 old-bucket
    • DESTINATION_BUCKET 是您要向其中移动数据的存储分区的名称,例如 my-bucket
  3. 使用带有 -r 选项的 gsutil rm 命令,以递归方式从源存储分区删除您的所有对象,并删除源存储分区本身:

    gsutil rm -r gs://SOURCE_BUCKET

    其中 SOURCE_BUCKET 是原始存储分区的名称,例如 old-bucket

    或者,如需删除对象但保留源存储分区,请运行以下命令:

    gsutil rm -a gs://SOURCE_BUCKET/**

REST API

JSON API

  1. 如果您还没有目标存储分区,请创建该存储分区

  2. 将源存储分区中的每个对象复制到目标存储分区。

  3. 删除源存储分区中的每个对象

  4. 删除源存储分区

XML API

  1. 如果您还没有目标存储分区,请创建该存储分区

  2. 将源存储分区中的每个对象复制到目标存储分区。

  3. 删除源存储分区中的每个对象

  4. 删除源存储分区

后续步骤