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/stackoverflow"
$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