首页 > 解决方案 > 如何告诉 gsutil 文件上传命令“dst_url”实际上是一个文件,而不是一个目录?

问题描述

在 GCS 存储桶上,我从 Web 控制台上传了一个名为 的文件fileName,并创建了一个同名的目录fileName。因此,GCS 存储桶在其根fileName目录包含同名文件和同名目录。

现在,当我尝试通过命令更新fileName文件时gsutil

gsutil cp localFile gs://bucketname/fileName

wherelocalFile是我本地机器上的一个文件,gs://bucketname/fileName因此是dest_url参数,而不是覆盖 GCS文件,而是在 GCS 目录中创建fileName一个具有 name 的新文件name ,这会产生 GCS file 。fileNamefileNamegs://bucketname/fileName/fileName

我在命令中找不到选项gsutil,这表明提供的dest_url应该被解释为文件而不是目录。

我错过了什么?请问有什么变通办法吗?

标签: gsutil

解决方案


实现此目的的解决方法是使用:

gsutil rsync -d . gs://bucketname

该命令将保留文件名目录的内容,但会改变文件名文件的内容;事实上,此命令将本地路径的内容(在本例中为“dot”指定的“当前”路径:.)与存储桶的内容同步,因此,如果您只是更改文件名文件的内容在您的本地系统中,同步将导致 GCS 存储桶中的文件名文件“覆盖”,而不会影响您的文件名目录。


推荐阅读