Google云存储-从网络下载文件

fob*_*bus 6 google-cloud-storage gsutil

我想在下一个项目中使用Google云存储。我的目的是跟踪各种网站并收集一些照片。作为,我阅读了gsutil的文档;我可以将文件手动下载到我的服务器,然后使用gsutil将其上传到Google云存储中。

下载和上传文件会在我的服务器中产生大量流量。有没有办法让Google Cloud直接从http下载文件?

Tur*_*ach 10

只要您的下载量小于4.6 GB,从Google Cloud Shell即可轻松完成此操作。启动Cloud Shell(在GCP中登录项目后,在右上角的第一个图标),然后使用wget下载所需的文件。例如,要下载7-Zip类型:

wget https://www.7-zip.org/a/7z1805-x64.exe
Run Code Online (Sandbox Code Playgroud)

现在将文件保存在Cloud Shell用户主目录中,您可以使用gsutil命令将其复制到Google Cloud Storage存储桶中:

gsutil cp ./7z1805-x64.exe gs://your_bucket_name/
Run Code Online (Sandbox Code Playgroud)

如果文件大于4.6 GB,您仍然可以这样做,但是您需要使用gcsfuse将存储桶安装在Cloud Shell中:

在您的Cloud Shell用户主目录中创建目录

 mkdir ~/mybucket
Run Code Online (Sandbox Code Playgroud)

现在,使用gcsfuse将存储桶安装在该目录中:

 gcsfuse bucket_name ~/mybucket
Run Code Online (Sandbox Code Playgroud)

将当前目录更改为挂载点目录:

 cd mybucket
Run Code Online (Sandbox Code Playgroud)

(如果您想获得一些乐趣,请运行“ df -h”,以查看在该安装点中获得了多少空间)

现在,使用wget将文件直接放入您的存储桶(使用网络上的10GB文件作为示例):

 wget https://speed.hetzner.de/10GB.bin
Run Code Online (Sandbox Code Playgroud)

更新 我刚刚找到了一种似乎更简单的方法,该方法似乎适用于所有文件大小:

 curl http://speedtest.tele2.net/10GB.zip | gsutil cp - gs://YOUR_BUCKET_NAME/10GB.zip
Run Code Online (Sandbox Code Playgroud)

基本上,curl将数据直接“流化”到存储桶。


Bra*_*ugh 2

Google Cloud Storage 仅直接接受数据。无法向其传递 URL 并将内容保存为对象。

但是,您没有理由不能自己构建此功能。例如,您可以设置一个或多个专用 GCE 实例来加载 URL,然后将其保存到 GCS。Google 也不对区域内进入 GCE 或从 GCE 进入 GCS 的网络收费,这很有帮助。