如何将文件从 colab 或云存储复制到谷歌驱动器?

Posted

技术标签:

【中文标题】如何将文件从 colab 或云存储复制到谷歌驱动器?【英文标题】:How to copy files from colab or cloud storage to google drive? 【发布时间】:2019-10-27 22:35:01 【问题描述】:

我阅读了一些关于这个问题的代码,但我无法理解这些代码。有人可以帮我解释一下代码吗?

# mount your drive
from google.colab import drive
drive.mount('/content/drive')
!gsutil -q -m cp -r gs://my-bucket-name drive /content/drive/My\ Drive/

我想将文件从 colab 或 google 云存储传输到 gdrive。代码中的“驱动器/内容/驱动器/我的驱动器/”代表什么?我应该如何解析这段代码。如果它适用于目录,我应该如何修改这段代码以使其适用于单个文件?

【问题讨论】:

【参考方案1】:
!cp "colab-path" -r "drive-path"

【讨论】:

为什么是 -r ?我试过没有 -r 效果很好 递归复制目录而不是单个文件。【参考方案2】:

gsutil cp -r 从一个或多个源文件/目录递归复制到某个目标目录。例如。要将一个或多个目录复制到另一个目录中,您可以:

gsutil cp -r src_folder1/ src_folder2/ dst_folder/

那么,让我们来解释一下上面示例中发生的一切:

您首先通过drive.mount() 在本地目录/content/drive 下使用一些文件系统适配器魔术来挂载Google Drive 的内容。 然后运行gsutil 命令。 gsutil 将参数“drive”视为应复制到目录“/content/drive/My Drive/”的另一个源文件(或目录)。如果文件/目录“驱动器”不存在,gsutil 会跳过它并抱怨它不存在(但 gsutil 仍会将其他源参数复制到目标,因为 -m 标志会导致它继续(在可能的情况下)遇到问题)。

因此,如果您想将名为“my-object-name”的对象从您的存储桶复制到您的 Google Drive 的根目录,该命令将如下所示:

!gsutil -q -m cp gs://my-bucket-name/my-object-name /content/drive/My\ Drive/

或者,复制对象并为其命名:

!gsutil -q -m cp gs://my-bucket-name/my-object-name /content/drive/My\ Drive/some-new-name

要详细了解gsutil、它的***标志和cp 命令,请查看网络文档:

Gsutil Top-Level Command-Line Options Gsutil cp - Copy files and objects

【讨论】:

非常感谢您提供如此详细的解释!

以上是关于如何将文件从 colab 或云存储复制到谷歌驱动器?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在不先将对象作为文件保存到谷歌驱动器的情况下从谷歌 colab 下载对象作为文件?

凭证 JSON 文件到谷歌 colab

如何将图像从谷歌驱动器导入谷歌 colab

如何将 spatie laravel 存储的备份上传到谷歌驱动器?

如何使用 colab 在谷歌驱动器上保存 np.array?

我想只将更新的文件上传到谷歌驱动器,但XCOPY似乎无法正常工作