AzCopy - 模式中间的通配符?

AzCopy - 模式中间的通配符?

问题描述:

场景: -Backups位于Azure存储包含 - 文件夹> 100,000文件夹的每个文件夹的 - 内部是按以下格式文件:MM-DD-YYYY_randomnumber.wav.gzAzCopy - 模式中间的通配符?

我们需要把所有从两个月的文件(未知数,可能是30,000-40,000)。

看起来像AzCopy是我们需要实现这个功能。

下面的命令是如何我想象它会工作,但我无法得到它这样做:

AzCopy /Source:https://path.to.files/path/to/files /Dest:C:\test /SourceKey:key /Pattern:11-*-2016_*.wav.gz /S 

下抓住父文件夹(它的命名一样它们内部的文件,没有.wav.gz扩展名),这不太理想,但是可行。然而,这将来自多个年抢文件:

AzCopy /Source:https://path.to.files/path/to/files /Dest:C:\test /SourceKey:key /Pattern:11 /S 

我读过的文件,并且它提到通配符可以在某些情况下,而不是其他人可以使用,但我不完全知道它的意思。

谢谢!

不,这是不可行的。根据AzCopy关于/ Pattern选项的文档:

如果指定的源是blob容器或虚拟目录,则不应用通配符。如果指定了选项/ S,则AzCopy将指定的文件模式解释为blob前缀。如果未指定选项/ S,则AzCopy会将文件模式与精确的斑点名称进行匹配。

您不必使用Azcopy,使用AzureRM模块的几行powershell应该能够下载文件。 虽然我还没有用大量的文件测试它。

使用powershell,您可以轻松编辑“blobnames”变量,并使用通配符选择正确的文件夹和文件。 您选择的Azure存储帐户中的文件夹也将在本地驱动器上创建。

$blobnames = "somebackups/2016.*/11-*-2016_*.wav.gz" 

下面的代码非常自我解释。

$storageAccountName = "storage" 
$storageAccountKey = "SuperLongKey" 
$containerName = "backup" 
$localDirectory = "c:/temp/*" 
$blobnames = "11-*-2016_*.wav.gz" 

$ctx = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey 

$blobsToDownload = Get-AzureStorageBlob -Context $ctx -blob $blobnames -Container $containerName 

$blobsToDownload | Get-AzureStorageBlobContent -Destination $localDirectory