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

Sud*_*aur 6 google-cloud-storage gsutil google-cloud-platform google-cloud-sdk

我正在尝试下载一个folder在我的内部Google Cloud Bucket,我从google docs gsutil/commands/cp中读取并在该行下面执行.

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

但我得到了 error

CommandException:没有匹配的URL: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"

Mih*_*ssu 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命令在创建这些文件时最终会失败您看到的错误消息.

  • @SudhanshuGaur您是否在Windows机器上(或使用Windows文件系统)?由于错误消息中显示的目录分隔符似乎是\而不是`/`,因此可以安全地假设它是正确的,在这种情况下@Paul可能是正确的,因为你不能在其名称中包含带有`:`字符的文件一个Windows文件系统.试试linux/macos机器,它可能会工作. (2认同)

Eug*_*ene 6

只是想帮助人们解决在 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)
Run Code Online (Sandbox Code Playgroud)

到(例如,目标是删除冒号):

download_file_name = _GetDownloadTempFileName(dst_url).replace(':', '-')
Run Code Online (Sandbox Code Playgroud)
  • 转到函数_ValidateAndCompleteDownload
  • 在第 3184 行(撰写本文时),更改以下行
final_file_name = dst_url.object_name
Run Code Online (Sandbox Code Playgroud)

到(例如,目标是删除冒号):

final_file_name = dst_url.object_name.replace(':', '-')
Run Code Online (Sandbox Code Playgroud)
  • 保存文件,然后重新运行gsutil命令
  • 仅供参考,我使用该命令gsutil -m cp -r gs://my-bucket/* .下载所有日志,默认情况下包含:这对 Windows 文件来说不是好兆头!

希望这对某人有帮助,我知道这是一个有点老套的解决方案,但鉴于您在 Windows 文件名中永远不需要(应该有)冒号,所以做完就忘记也没关系。请记住,如果您更新 Google SDK,则必须重做此操作。