将文件从 Google Cloud Storage 添加到云端硬盘
Posted
技术标签:
【中文标题】将文件从 Google Cloud Storage 添加到云端硬盘【英文标题】:Add files from Google Cloud Storage to Drive 【发布时间】:2017-04-02 13:37:06 【问题描述】:我正在用 NodeJS 开发一个后端服务。它通过请求临时链接并将此链接发送到第三方分析服务来处理来自 Google Cloud Storage 的图像。我还希望将图像添加到共享的 Google Drive 文件夹中。是否有任何可能的方法可以轻松地做到这一点(例如,通过使用 Drive API 并将链接发布到文件,而不是下载文件并随后上传)。换句话说:Drive API 是否接受指向文件的链接,而不是上传它们?或者有没有其他巧妙的方法可以轻松地将 Google Cloud 共享到云端硬盘(因为它都是 Google 服务)。
谢谢
【问题讨论】:
我知道这是个老问题。有没有更新的解决方案? 【参考方案1】:目前最好的方法是使用 Google Colab 笔记本:
-
创建一个Google Colab 笔记本并连接到您的 GCP 存储桶并将 Google 云端硬盘安装到其中:
# authenticate
from google.colab import auth
auth.authenticate_user()
# set your gcp project
!gcloud config set project my-project
# mount your drive
from google.colab import drive
drive.mount('/content/drive')
-
运行
gsutil
命令将您的 GCP 存储数据复制到已装载的驱动器
!gsutil -q -m cp -r gs://my-bucket-name /content/drive/My\ Drive/
【讨论】:
Colab 中的 Google Drive 装载似乎可以缓冲磁盘上的写入,因此如果您尝试将大量数据移动到 Drive,您的 colab 实例的驱动器将耗尽空间。至少这是我的经验……【参考方案2】:我进行了一些搜索,但是除了下载和上传文件之外,我没有看到将文件从 Google Cloud Storage 添加到 Google Drive 的方法。此外,AFAIK,gsutil
,Google Cloud Storage APIs 可以与之交互,也支持在共享到其他存储时下载和上传文件。
而且,正如 Cloud Storage - Frequently Asked Questions 中所回答的那样,Google Drive 和 Google Cloud Storage 是两种不同的存储服务,它们都允许以编程方式访问其功能,但 API 的目标完全不同。
但是,您可能想尝试使用Request Endpoints,您可以通过三个请求端点 (URI) 访问 Google Cloud Storage。您使用哪一种取决于您正在执行的操作。
重要提示:此页面上描述的 Google Cloud Storage URI 可能会发生变化。
您可以使用以下 URL 来访问对象:
XML API
storage.googleapis.com/<bucket>/<object>
<bucket>.storage.googleapis.com/<object>
JSON API
www.googleapis.com/download/storage/v1/b/<bucket>/o/<object-encoded-as-URL-path-segment>?alt=media
这些 URL 支持安全套接字层 (SSL) 加密,这意味着您可以使用 HTTP 或 HTTPS。如果您使用 OAuth 2.0 向 Google Cloud Storage API 进行身份验证,则应使用 HTTPS。
您可能还想查看Sharing and Collaboration 了解更多信息。
【讨论】:
以上是关于将文件从 Google Cloud Storage 添加到云端硬盘的主要内容,如果未能解决你的问题,请参考以下文章
将大量文件从 Google Cloud Storage 复制到 Google Colab,无需记录/打印
将文件从 Google Cloud Storage 添加到云端硬盘
从 Google Cloud Function (Python) 将新文件写入 Google Cloud Storage 存储桶
将文件从 S3 存储桶复制到 Google Cloud Storage
Google Cloud Storage - 将文件从一个文件夹移动到另一个文件夹 - 使用 Python
Apache Beam/Google Dataflow - 将数据从 Google Datastore 导出到 Cloud Storage 中的文件