Azcopy从SQL移动或删除特定文件

我需要将文件从一个Blob移到另一个Blob。不复制。我需要搬家;意思是当我从A移到B时,文件又从A移到B,而A中什么也没有。这很基本,但是在Azure Blob中是不可能的。请让我知道是否可能。我正在使用AzcopyVersion 10.3.2

从SQL Server使用它

现在,由于这个原因,我需要将文件从A复制到B,然后从A删除文件。有2个问题。

1)我只希望某些文件从A移到B。

DeclARE @Program varchar(200) = 'C:\azcopy.exe'
DeclARE @Source varchar(max) = '"https://myblob.blob.core.windows.net/test/myfolder/*?SAS"'
DeclARE @Destination varchar(max) = '"https://myblob.blob.core.windows.net/test/archive?SAS"'

DeclARE @Cmd varchar(5000)
SELECT @Cmd = @Program +' cp  '+ @Source +' '+ @Destination + ' --recursive'
PRINT @cmd

EXECUTE master..xp_cmdshell @Cmd 

因此,当我键入myfolder/*时,它将占用所有文件。当我尝试myfolder/*.pdf时,它说       failed to parse user input due to error: cannot use wildcards in the path section of the URL except in trailing "/*". If you wish to use * in your URL,manually encode it to %2A

当我尝试myfolder/%2A.pdfmyfolder/%2Apdf时,仍然会显示错误。

  

信息:无法创建一个或多个目标容器。如果该容器已经存在,则您的传输可能仍会成功。

但是目标文件夹已经存在。并且在日志文件中说,

  

RESPONSE状态:403该请求无权执行此操作。

yuanyuanlizhu 回答:Azcopy从SQL移动或删除特定文件

对于azcopy版本10.3.2:

1。复制特定文件,例如仅复制.pdf文件:您应在命令中添加--include-pattern "*.pdf"。还要记住,对于 @Source 变量,请删除通配符*,因此您的@Source应该为'"https://myblob.blob.core.windows.net/test/myfolder?SAS"'

完成的命令如下所示(请更改它以符合您的sql cmd):

azcopy cp "https://xx.blob.core.windows.net/test1/folder1?sas" "https://xx.blob.core.windows.net/test1/archive1?sas" --include-pattern "*.pdf" --recursive=true

2。要删除特定的blob,例如仅删除.pdf文件,还应在--include-pattern "*.pdf"命令中添加azcopy rm

而且,azcopy中没有 move 命令,您应该先复制它=>然后将其删除。您可以使用上面的2条命令来实现这一点。

本文链接:https://www.f2er.com/2990689.html

大家都在问