错误“没有匹配的网址”将Google云端数据桶数据复制到本地计算机时?

时间:2018-03-26 12:51:49

标签: google-cloud-platform google-cloud-storage gsutil google-cloud-sdk

我正在尝试下载我folder内的Google Cloud Bucket,我从谷歌文档gsutil/commands/cp读取并在该行下方执行。

  

gsutil cp -r appengine.googleapis.com gs:// my-bucket

但我得到了error

  

CommandException:没有匹配的网址:appengine.googleapis.com

修改

通过运行以下命令

  

gsutil cp -r gs:// logsnotimelimit。

我收到错误

  

IOError:[Errno 22]无效模式('ab')或文件名:u'。\ logsnotimelimit \ appengine.googleapis.com \ nginx.request \ 2018 \ 03 \ 14 \ 14:00:00_14:59:59_S0 .json_.gstmp'

3 个答案:

答案 0 :(得分:6)

命令中的appengine.googleapis.com参数是什么?这是您尝试复制到云存储桶的文件系统上的本地目录吗?

您提供的gsutil cp -r appengine.googleapis.com gs://my-bucket命令会将名为appengine.googleapis.com的本地目录以递归方式复制到名为my-bucket的云存储桶中。如果那不是你在做什么 - 你需要以不同的方式构建你的命令。

即。从名为folder的云存储桶下载名为my-bucket的目录到当前位置尝试运行 gsutil cp -r gs://my-bucket/folder .

- 更新:由于您似乎在使用Windows计算机(错误消息中的“\”目录分隔符而不是“/”)并且由于文件名包含“:”字符,因此cp命令在创建带有您看到的错误消息的文件时最终会失败。

答案 1 :(得分:0)

如果有人在Windows上遇到此问题,只是想帮助他们。以管理员身份:

  • 打开C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gslib\utils
  • 删除copy_helper.pyc
  • 更改copy_helper.py的权限以允许写入
  • 打开copy_helper.py
  • 转到功能_GetDownloadFile
  • 在2312行(在撰写本文时),更改以下行
download_file_name = _GetDownloadTempFileName(dst_url)

to(例如,目标是去除冒号)

download_file_name = _GetDownloadTempFileName(dst_url).replace(':', '-')
  • 转到功能_ValidateAndCompleteDownload
  • 在3184行(在撰写本文时),更改以下行
final_file_name = dst_url.object_name

to(例如,目标是去除冒号)

final_file_name = dst_url.object_name.replace(':', '-')
  • 保存文件,然后重新运行gsutil命令
  • 仅供参考,我正在使用命令gsutil -m cp -r gs://my-bucket/* .下载我的所有日​​志,默认情况下其中包含:,对于Windows文件而言并不理想!

希望这对某人有帮助,我知道这是一个有点棘手的解决方案,但是由于您不需要(应该有)Windows文件名中的冒号,因此可以很好地做到并忘记。请记住,如果您更新Google SDK,则必须重做。

答案 2 :(得分:0)

我遇到了同样的问题并如下解决。

  1. 打开云外壳,并使用 gsutil 命令复制对象。
<块引用>

gsutil -m cp -r gs://[some bucket]/[object] .

  1. 在 shell 上,使用 zip 命令压缩这些对象。
<块引用>

zip [某个文件名].zip -r [特定文件夹的某个名称]

  1. 在 shell 上,使用 gsutil 命令将 zip 文件复制到 GCS。
<块引用>

gsutil cp [某个文件名].zip gs://[某个桶] .

  1. 在 Windows 命令提示符下,使用 gsutil 命令复制 GCS 中的 zip 文件。
<块引用>

gsutil cp gs://[some bucket]/[some file name].zip .

我希望这些信息对某人有所帮助。