将文件从单一来源复制到多个目标

时间:2019-02-06 19:25:07

标签: powershell azure-storage

我有一个脚本可以将文件从本地计算机复制到Azure blob,但是我的新要求是将源文件的一半复制到一个blob容器中,另一半复制到另一个blob容器中。让我知道是否可以使用并行或一个接一个地执行此操作。我现在使用azcopy来移动这些文件而不会拆分,并且仅从一个源移动到一个目标。

.\AzCopy.exe /Source:$localfilepath /Dest:$Destinationpath /DestKey:$key1 /S

1 个答案:

答案 0 :(得分:0)

如我所知,如果有一种模式可以过滤这些文件名,则可以使用Pattern工具的参数AzCopy两次分别上传它们,例如下面的命令如果它们以a前缀命名,请参见官方教程的Upload blobs matching a specific pattern部分。

AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer /DestKey:key /Pattern:a* /S

以下是AzCopy的参数Pattern的说明

  

/模式:“文件模式”

     

指定指示要复制哪些文件的文件模式。 / Pattern参数的行为取决于源数据的位置以及递归模式选项的存在。通过选项/ S指定递归模式。

     

如果指定的源是文件系统中的目录,则标准通配符生效,并且所提供的文件模式与目录中的文件匹配。如果指定了选项/ S,则AzCopy还将指定的模式与目录下任何子文件夹中的所有文件进行匹配。

     

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

     

如果指定的源是Azure文件共享,则必须指定确切的文件名(例如abc.txt)以复制单个文件,或者指定选项/ S递归复制共享中的所有文件。尝试同时指定文件模式和选项/ S会导致错误。

     

当/ Source是blob容器或blob虚拟目录时,AzCopy使用区分大小写的匹配,而在所有其他情况下使用不区分大小写的匹配。

     

未指定文件模式时使用的默认文件模式为。用于文件系统位置,或用于Azure存储位置的空前缀。不支持指定多个文件模式。

     

适用于:斑点,文件

如果文件有简单的模式,则必须手动将其移动到其自己类别的目录中,或者编写一个简单的脚本来对其进行过滤以生成用于上载的命令字符串。然后,您可以在PowerShell中使用Foreach-Parallel来实现并行上传工作流程,以满足您的需求。