Azcopy-模式中间的通配符



方案: - 位于Azure存储中的背部 - 装有> 100,000个文件夹的垃圾箱 - 每个文件夹的内部是以下格式的文件:mm-dd-yyyy_randomnumber.wav.gz

我们需要从两个月(未知数,可能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

我已经阅读了文档,它提到可以在某些情况下而不是其他情况下使用通配符,但我不确定它的含义。

谢谢!

我知道这个问题已经很久以来已经问过,但是现在有一个acclude-pattern标志,它将允许您创建更具体的通配符模式,例如在原始帖子。

不,这是不可行的。根据有关/模式选项的Azcopy文档:

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

您不必使用Azcopy,使用Azurerm模块的几行PowerShell应该能够下载文件。 Altough我尚未使用大量文件进行测试。

和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

最新更新