firebase - 在项目之间转移 Firebase 存储桶
问题描述
我正在尝试将一个 Firebase 项目的存储桶中的文件夹内容复制到另一个 Firebase 项目的存储桶中。
我一直在关注 Firestore文档和这个SO question。
这两个项目都拥有对其他服务帐户的必要权限。
这是我所做的:
当尝试使用云 shell 终端将文件从 Project-A 的默认存储桶中的文件夹传输到 Project-B 的默认存储桶时,我首先将项目设置为“Project-A”。然后我跑了gcloud beta firestore export gs://[PROJECT_A_ID] --collection-ids=[FOLDER_TO_TRANSFER] --async
。这成功并在 Project-A 中创建了一个名为“2019-08-26T21:23:23_26014/”的文件夹。此文件夹包含一些元数据。接下来,我尝试通过将项目设置为 Project-B 并运行来开始导入。gcloud beta firestore import gs://[PROJECT_A_ID]/2019-08-26T21:23:23_26014
这完成并且日志显示以下消息:
done: true
metadata:
'@type': type.googleapis.com/google.firestore.admin.v1beta1.ImportDocumentsMetadata
collectionIds:
- [FOLDER_TO_TRANSFER]
endTime: '2019-08-26T21:25:56.794588Z'
inputUriPrefix: gs://[PROJECT_A_ID]/2019-08-26T21:23:23_26014
operationState: SUCCESSFUL
startTime: '2019-08-26T21:25:19.689430Z'
name: projects/[PROJECT_B]/databases/(default)/operations/[SOME_ID_STRING]
response:
'@type': type.googleapis.com/google.protobuf.Empty
但是,Project-B 存储桶没有任何新文件或文件夹。看起来导入什么也没做。我错过了什么吗?
解决方案
您可以在 GCP Console 中创建传输作业。只要您具有访问权限,您就可以指定来自不同项目的源/目标存储桶。您可以通过设置“指定文件过滤器”来指定文件夹:
https://console.cloud.google.com/storage/transfer
您还可以使用该gsutil
工具(它是 的一部分)gcloud
将您的对象移动或复制到另一个存储桶。
因此,您的默认存储桶将是gs://[PROJECT_A_ID].appspot.com
,gs://[PROJECT_B_ID].appspot.com
假设您要复制以下内容my_directory
:
gsutil cp -r gs://[PROJECT_A_ID].appspot.com/my_directory gs://[PROJECT_B_ID].appspot.com
推荐阅读
- python - 如何在kivy中制作画廊?
- android - 使用 FaceBook 登录不适用于 Unity Android 项目(Firebase 身份验证)
- wpf - 如何设置 ScrollContentPresenter 的背景色?
- facebook - 即使我已经有一个,设置持久性菜单也会返回“必须开始”
- java - 如何创建正确的mysql连接
- oop - DDD 是否违反了某些 OOP 原则?
- angular - 以角度解码jwt令牌?
- openshift - Quarkus OpenShift 部署有效,但未推出
- laravel - 集成 laravel 7 日志到 slack
- javascript - 使用日期每 5 秒编码一个唯一字符串