我在客户端计算机(MS Server 2012R2)上安装了本地Integration运行时,可以访问那里的本地文件夹。另一个程序每隔5分钟定期吐出.csv文件1个。 我需要将它们照原样复制到Blob存储(二进制文件很好)。成功复制它们后,我需要返回并仅删除那些已上传的文件,即不要删除自管道运行开始以来可能已添加的任何文件。
我知道ADF中没有“移动”活动,并且我已经看到了一些不同的方式将复制和删除活动与ForEach结合在一起以进行移动,但是不确定最佳实践。
我正在尝试在UI中完成所有这些操作(无代码),并且进行简单的文件复制或删除活动没有问题-我只是不确定如何将它们与ForEach链接在一起-甚至连最好的方法?
预期的结果是处理没有文件要复制的情况,但是如果有ADF,则应复制所有可用文件,然后仅删除成功复制的文件。
答案 0 :(得分:0)
提供两种方式供您参考:
第一个,如您在问题中提到的,使用 Azure Data Factory 。
您可以使用复制活动将数据从本地文件夹传输到Azure Blob存储中。然后使用Delete Activity删除本地文件夹中的文件。
按计划运行整个管道,按照此guide按照文件的最新修改时间过滤文件。在复制活动和删除活动之间,使用if-condition activity控制传输过程。如果复制活动已成功执行,则删除操作将继续。
第二个,使用 Az复制。
Az副本可以将本地数据迁移到云存储。 (详细的link)
下面的示例命令将数据从本地目录递归复制到Blob容器。虚拟SAS令牌附加到容器URL的末尾。
azcopy cp "C:\local\path" "https://account.blob.core.windows.net/mycontainer1/?sv=2018-03-28&ss=bjqt&srt=sco&sp=rwddgcup&se=2019-05-01T05:01:17Z&st=2019-04-30T21:01:17Z&spr=https&sig=MGCXiyEzbtttkr3ewJIh2AR8KrghSy1DGM9ovN734bQF4%3D" --recursive=true
您仍然可以在计划中运行az copy命令:https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-migrate-on-premises-data?tabs=linux#create-a-scheduled-task
此外,您可以参考此link来了解用于数据传输的多个Azure解决方案。