azure Azcopy源和目标冲突

to94eoyn  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(118)

我对azcopy如何解释blob感到困惑
我的源URL在 “staging”“folder”下有文件。
我的目标应该在 “staging/outputtestfinal” 下接收这些文件
但是,azcopy正在 “staging/outputtestfinal/staging” 下复制blob
为什么要在我目的地的第二个中转站?
我尝试 * https://myurlsource/staging/,但输出为staging/outputtestfinal/staging/
所以一个文件夹作为“*”作为创建..是吗?这么简单的事我是怎么做到的?

azcopy copy "https://myurlsource/staging/" "https://myurldestin.blob.core.windows.net/staging/outputtestfinal/" --include-pattern '*.json' --recursive=true
w80xi6nr

w80xi6nr1#

当您使用azcopy从一个blob存储位置复制到另一个blob存储位置时,它将尝试保留相对于提供的源URL的文件夹结构。这就是为什么你在观察这种行为。
如果你的源URL是https://myurlsource/staging/,并且你有一个名为file1.json的blob,并且你要将它复制到https://myurldestin.blob.core.windows.net/staging/outputtestfinal/,那么目标路径就变成了https://myurldestin.blob.core.windows.net/staging/outputtestfinal/staging/file1.json
为了避免这种情况,您可以尝试以下操作:

请使用不带斜杠的字符串*

这告诉azcopy只考虑staging虚拟目录下的blob,而不考虑目录本身。

azcopy copy "https://myurlsource/staging/*" "https://myurldestin.blob.core.windows.net/staging/outputtestfinal/" --include-pattern '*.json' --recursive=true
ego6inou

ego6inou2#

所以一个文件夹作为“*”作为创建..是吗?我怎么能做这么简单的事
在我的环境中,我的源容器看起来像你。

入口:

要复制目的地,您需要使用一个类似于***的参数来只复制文件,它将排除该文件夹。
从我这边的容器是在
private**,所以我使用SAS令牌。

命令:

azcopy copy "https://venkat123.blob.core.windows.net/test/staging/*?sas-token" "https://venkat123.blob.core.windows.net/test1/staging/outputtestfinal?sas-token" --include-pattern '*.json' --recursive=true

输出:

目的地:

参考:

使用AzCopy v10将数据传输到Azure文件或从Azure文件传输数据|微软学习

相关问题