繁体   English   中英

Azcopy:使用 Azcopy 10 将文件复制到 Azure 文件共享

[英]Azcopy: Copying files to an Azure Fileshare using Azcopy 10

我正在尝试使用 AZCopy v10 将文件复制到 Azure Fileshare 或从中复制文件。 我已经使用 v8.1 成功地完成了这项工作,但我在使用 v10 时一直遇到错误。

在命令行中,我使用它来将文件从本地驱动器复制到文件共享;

c:\Temp\azcopy.exe copy "c:\temp\sample.txt" "https://myfiles.file.core.windows.net/dbfiles/sample.txt?SASKeyText"

这会生成错误消息;

由于错误无法执行复制命令:无法将单个文件/文件夹传输到服务的根目录。 添加容器或目录到目的地 URL

我尝试将目录添加到文件共享并将其添加到命令字符串,但我得到了同样的错误。

如果我将文件共享中的副本反转到本地驱动器,则会出现错误;

由于错误无法执行复制命令:帐户复制是一种固有的递归操作,因此需要 --recursive

我已按照https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-files上的指南进行操作,但无法看出问题所在。

在此先感谢您的帮助。

这里的错误是 SAS 令牌而不是命令的形式。

我想这应该在无用的错误消息示例中进行标记。

感谢所有花时间看的人。

尝试从本地计算机复制到 Azure Blob 存储时,我遇到了同样的问题。

这是我正在运行的命令:

azcopy copy --from-to=LocalBlob "C:\AzureStorageTest\my-app\*" "https://myapptest.blob.core.windows.net/%24web" --recursive

但我收到以下错误:

由于错误无法执行复制命令:无法将单个文件/文件夹传输到服务的根目录。 将容器或目录添加到目标 URL

这是我解决它的方法

我在 Blob 存储位置的末尾缺少?[SAS]参数。 所以代替这个:

azcopy copy --from-to=LocalBlob "C:\AzureStorageTest\my-app\*" "https://myapptest.blob.core.windows.net/%24web" --recursive

我有这个:

azcopy copy --from-to=LocalBlob "C:\AzureStorageTest\my-app\*" "https://myapptest.blob.core.windows.net/%24web?[SAS]" --recursive

注意

  1. 格式为azcopy copy "/path/to/dir" "https://[account].blob.core.windows.net/[container]/[path/to/directory]?[SAS]" --recursive 您只需要修改"/path/to/dir"[account][container]/[path/to/directory] 其他一切都保持原样。
  2. 使用--from-to=LocalBlob (如果要从本地复制到 blob 存储)参数指定源-目标路由,以明确复制操作。
  3. 我的实际 Blob 存储位置是https://myapptest.blob.core.windows.net/$24web但我使用https://myapptest.blob.core.windows.net/%24web ,因为$使用时会抛出一些错误,所以使用了%24

就这样。

我希望这有帮助

这是一个对我有用的示例 azcopy 脚本

az storage azcopy blob upload
       -c'https://$AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/\\\$web' \
       --account-name $AZURE_STORAGE_ACCOUNT_NAME \
       -s "build/*" \
       --account-key $AZURE_STORAGE_ACCOUNT_ACCESS_KEY \
       --recursive  

如果在尝试复制到$web 容器时出现此错误:

由于错误而无法执行复制命令:无法将单个文件/文件夹传输到服务的根目录。将容器或目录添加到目标 URL

根据此处列出的解决方案,我们需要在 $web 之前添加一个转义字符 ( \ )。 以下命令(将所有文件和子文件夹复制到 web 容器)对我有用:

azcopy copy "<local_folder>/*" "https://******.blob.core.windows.net/\$web/?<SAS token>" --recursive

如果没有转义字符,以下命令将失败并出现上述错误。

azcopy copy "<local_folder>/*" "https://******.blob.core.windows.net/$web/?<SAS token>" --recursive

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM