Azcopy将源解释为本地,当它是gcloud storage https url时添加当前路径 &



我们想要将文件从Google Storage复制到Azure Storage。我们使用以下指南:https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-google-cloud

我们运行这个命令:

azcopy copy 'https://storage.googleapis.com/telia-ddi-delivery-plaace/activity_daily_al1_20min/' 'https://plaacedatalakegen2.blob.core.windows.net/teliamovement?<SASKEY>' --recursive=true

并得到这个结果错误:

INFO: Scanning...
INFO: Any empty folders will not be processed, because source and/or destination doesn't have full folder support
failed to perform copy command due to error: cannot start job due to error: cannot scan the path /Users/peder/Downloads/https:/storage.googleapis.com/telia-ddi-delivery-plaace/activity_daily_al1_20min, please verify that it is a valid.

在我们看来,azcopy将源代码解释为本地文件目标,因此添加了我们运行它的当前位置:/Users/peder/Downloads/。但是我们找不到任何参数来表明它是一个web位置,并且它与本指南中的文档相同:

azcopy copy 'https://storage.cloud.google.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true

我们已经尝试过的:

  • 我们在Mac终端上做这个,但是我们也在Mac上测试了PowerShell。
  • 我们已经尝试了单引号和双引号。
  • 我们从控制台复制了带有SAS密钥的Azure存储url,以确保语法正确
  • 我们尝试了cp而不是copy,因为azcopy使用了帮助页。

我们的命令有什么问题吗?或者是指南写好之后,有任何副本被修改过吗?

我还在Azure文档git页面上创建了一个问题:https://github.com/MicrosoftDocs/azure-docs/issues/78890

你遇到这个问题的原因是因为URLstorage.cloud.google.com是硬编码在Google Cloud Storage的应用程序源代码中。从这个link:

const gcpHostPattern = "^storage.cloud.google.com"
const invalidGCPURLErrorMessage = "Invalid GCP URL"
const gcpEssentialHostPart = "google.com"

由于您使用的是storage.googleapis.com而不是storage.cloud.google.com,它不能被azcopy识别为有效的Google Cloud Storage端点,它认为该值是您本地文件系统中的目录之一。

在我的例子中,在azcopy命令中将单引号改为双引号解决了这个问题。

PS:我从Windows开发人员命令提示符中运行了azcopy

相关内容

最新更新