如何在存储桶上的 gsutil cp 期间 keep/re-create 对象元数据

How to keep/re-create object metadata during gsutil cp on storage bucket

我想将我的 Google 云存储桶中的所有文件与我的 Firebase 存储模拟器中导出的文件同步。

  1. 我使用 gsutil 下载了我所有的云文件到我的本地机器。
  2. 我使用 BeyondCompare 将所有新文件移动到 '../storage_export/blobs/ 目录。
  3. 如何 update/create '../storage_export/metadata' 中的 JSON 元数据来反映这些新文件并使它们在以下情况下可用我 运行 模拟器并将它们导入?

编辑:

gsutil docs 提及以下内容:

when you download data from the cloud, it ends up in a file with no associated metadata, unless you have some way to keep or re-create that metadata.

如何在gsutil cp下载期间“保留”“重新创建”元数据?

你可以使用gsutil或者SDK获取每个object's metadata and then write it down to a JSON file however, there's currently no native way to import Google Cloud Storage data in the Storage Emulator. But as I stated in my answer to this post,你可以通过在模拟器中上传示例文件然后运行导出来研究模拟器如何注册对象,你会看到模拟器将需要 1 个对象和 1 个包含其元数据的 JSON 文件。

最后,您可以在启动模拟器时添加选项--export-on-exit,从真实的Firebase项目下载所有数据,使用模拟器上传所有内容,然后关闭模拟器;如本 post.

所述

注意:这不是记录的功能! Firebase 没有在其 public SDK 或 API 中公开下载令牌的概念,因此以这种方式操作令牌感觉有点“hacky”。为了进一步参考,请查看此 post.