【问题标题】:How to keep/re-create object metadata during gsutil cp on storage bucket如何在存储桶上的 gsutil cp 期间保留/重新创建对象元数据
【发布时间】:2021-12-27 00:16:48
【问题描述】:
我想将 Google Cloud Storage 存储分区中的所有文件与 Firebase Storage Emulator 中导出的文件同步。
- 我使用
gsutil 将我所有的云文件下载到我的本地计算机。
- 我使用 BeyondCompare 将所有新文件移动到 '../storage_export/blobs/ 目录。
- 如何更新/创建“../storage_export/metadata”中的 JSON 元数据以反映这些新文件并在我运行模拟器并将它们导入时使它们可用?
编辑:
gsutildocs 提及以下内容:
当您从云端下载数据时,它最终会生成一个没有关联元数据的文件,除非您有办法保留或重新创建该元数据。
在gsutil cp 下载期间如何“保留”或“重新创建”该元数据?
【问题讨论】:
标签:
firebase
google-cloud-platform
google-cloud-storage
gsutil
【解决方案1】:
您可以使用 gsutil 或 SDK 获取每个 object's metadata,然后将其写入 JSON 文件,但是,目前没有在存储模拟器中导入 Google Cloud Storage 数据的本地方法。但正如我在对此post 的回答中所述,您可以通过在模拟器中上传示例文件然后运行导出来研究模拟器如何注册对象,您将看到模拟器将需要 1 个对象和 1 个 JSON 文件包含它的元数据。
最后,你可以在启动模拟器时添加选项--export-on-exit,从真实的Firebase项目下载所有数据,用模拟器上传所有内容,然后关闭模拟器;如post中所述。
注意:这不是文档中的功能! Firebase 并未在其公共 SDK 或 API 中公开下载令牌的概念,因此以这种方式操作令牌感觉有点“hacky”。如需进一步参考,请查看此post。