首页 > 解决方案 > Azure 批处理任务依赖项:从以前复制文件

问题描述

我有一个 Azure Batch 场景,其中我有一系列相互运行的任务。依赖关系设置正确,因此它们彼此运行良好。

但是,我需要在执行之前将所有文件从以前的任务文件夹复制到新任务的文件夹中。我事先不知道会有多少文件和什么文件,所以我只想复制所有内容。我找不到使用 Batch 客户端库 ( https://docs.microsoft.com/en-us/dotnet/api/overview/azure/batch?view=azure-dotnet ) 完成此任务的方法。

作为一种解决方法,我尝试向执行的 .bat 文件添加一个简单的复制任务,commandline但由于某种原因它只复制了一些文件。在一项任务中,有几百个文件要复制,并且在停止复制之前它复制了多少部分(没有错误)会有所不同。这是我的复制命令:$"cmd /c xcopy /E /F /Y %AZ_BATCH_TASK_WORKING_DIR%\\..\\..\\{previousTaskId}\\wd %AZ_BATCH_TASK_WORKING_DIR%"。如果直接从 VM 执行,一切都会正常工作。

检验假设:

有任何想法吗?这听起来像一个微不足道的场景,但我就是不知道如何做到这一点。

标签: c#azure.net-coreazure-batch

解决方案


retentionTime为你的任务配置了什么?

我想知道 Batch 是否在您的下游任务试图复制它们的同时清理上一个任务(删除所有文件)。

一个未经测试的建议...

...假设您有按该顺序运行的任务 A 和 B(使用任务依赖项强制执行)。

...outputFile在任务 A 上配置以将生成的所有文件复制A到您的存储帐户中。使用通配符,以便将所有文件复制到同一个容器中。

...resourceFile在任务 B 上配置以将存储帐户中的所有文件复制到任务工作目录中。

这具有将您的中间工作文件保留在计算节点之外的优势 - 如果/当某些事情中断您的工作负载时,您可以从中断的地方继续。


推荐阅读