使用 gsutil 重命名 GCS 中的文件夹
Rename a folder in GCS using gsutil
我无法重命名 GCS 中的现有文件夹。我该怎么做?
根据 documentation,这应该是:
gsutil mv gs://my_bucket/olddir gs://my_bucket/newdir
然而,olddir
被放置在 newdir
下,即目录结构是这样的(在调用 gsutil mv
之后):
my_bucket
newdir
olddir
而不是(我所期望的)
my_bucket
newdir
我已经尝试了所有四种组合是否放置尾部斜杠,但 none 行得通。
我重现了您的情况,方法是在一个存储桶中包含一个名为 olddir 的文件夹,我想将其中的内容移动到 newdir 文件夹。
以下命令:
gsutils mv gs://<bucketname>/olddir gs://<bucketname>/newdir
将文件夹的全部内容移动到新创建的 newdir 文件夹中。
Olddir 和 newdir 文件夹然后处于同一级别,在存储桶根目录中。
之后我只需要删除名为 olddir 的文件夹。
存储桶中的对象无法重命名。
gsutil mv 命令不会像 Unix CLI 中的 mv 命令那样删除先前的文件夹对象。
我猜想如果您尝试使用不同位置的“/”字符多次移动文件夹,那么在发出初始命令后文件夹的结构和层次结构将发生变化。
请从头重试
请记住,一旦文件夹中有子文件夹,就必须使用完整路径一个一个地移动对象。
这是 GCS 中已确认的错误,请参阅 https://issuetracker.google.com/issues/112817360
它实际上只发生在 newdir
的目录名称是 olddir
的子字符串时。因此,问题中的 gsutil
调用实际上有效,但以下调用无效:
gsutil mv gs://my-organization-empty-bucket/dir_old gs://my-organization-empty-bucket/dir
我无法重命名 GCS 中的现有文件夹。我该怎么做?
根据 documentation,这应该是:
gsutil mv gs://my_bucket/olddir gs://my_bucket/newdir
然而,olddir
被放置在 newdir
下,即目录结构是这样的(在调用 gsutil mv
之后):
my_bucket
newdir
olddir
而不是(我所期望的)
my_bucket
newdir
我已经尝试了所有四种组合是否放置尾部斜杠,但 none 行得通。
我重现了您的情况,方法是在一个存储桶中包含一个名为 olddir 的文件夹,我想将其中的内容移动到 newdir 文件夹。
以下命令:
gsutils mv gs://<bucketname>/olddir gs://<bucketname>/newdir
将文件夹的全部内容移动到新创建的 newdir 文件夹中。
Olddir 和 newdir 文件夹然后处于同一级别,在存储桶根目录中。 之后我只需要删除名为 olddir 的文件夹。
存储桶中的对象无法重命名。
gsutil mv 命令不会像 Unix CLI 中的 mv 命令那样删除先前的文件夹对象。
我猜想如果您尝试使用不同位置的“/”字符多次移动文件夹,那么在发出初始命令后文件夹的结构和层次结构将发生变化。
请从头重试
请记住,一旦文件夹中有子文件夹,就必须使用完整路径一个一个地移动对象。
这是 GCS 中已确认的错误,请参阅 https://issuetracker.google.com/issues/112817360
它实际上只发生在 newdir
的目录名称是 olddir
的子字符串时。因此,问题中的 gsutil
调用实际上有效,但以下调用无效:
gsutil mv gs://my-organization-empty-bucket/dir_old gs://my-organization-empty-bucket/dir