在GCS存储桶中移动大量文件夹和文件

问题描述

我在GCP上有一个存储桶,在此存储桶的顶层,我有一堆文件夹。

我想创建一个文件夹并将所有其他文件夹移到其中。

但是,我已经用gcsfuse安装了存储桶,并尝试了传统的Linux mv命令。显然,这是不允许的。

同样,我也尝试过gsutil -m mv gs://mybucket/* gs://mybucket/new_folder/并收到命令错误,指出此操作不允许使用通配符。

将大量文件移到新目录的最佳选择是什么?

解决方法

根据@JohnHanley提供的评论,将此作为社区Wiki答案发布。

有关云存储的一些概念。

  1. 对象是不可变的,这意味着您不能重命名。您必须复制对象并删除原始对象以模拟更改名称。
  2. 目录/文件夹不存在。命名空间是平面的,所有对象都在根目录中。文件夹的外观只是对象名称的一部分。
  3. Cloud Storage支持内部对象复制。注意不要使用先下载对象然后上传的功能。

考虑到此信息,您将需要使用工具,例如gsutil,以便可以根据需要开始重命名和移动文件。