将文件从 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 中的文件