能否定时将FTP文件及文件夹传输至Azure Blob?Logic Apps复制文件夹故障咨询
解答:FTP到Azure Blob的定时传输及Logic Apps文件夹复制问题
我来帮你拆解这两个问题:
1. 定时传输文件及文件夹到Azure Blob是完全可行的
你可以通过Azure Logic Apps或者Azure Functions来实现定时同步:
- 如果用Logic Apps,核心是用Recurrence触发器设置定时规则(比如每天凌晨2点、每小时一次),然后配合FTP的遍历操作来同步所有指定路径下的文件和文件夹。
- 如果需要更灵活的自定义逻辑,也可以用Azure Functions的定时触发器(Timer Trigger),结合FTP客户端库和Azure Blob存储SDK来编写同步代码。
2. Logic Apps无法复制FTP文件夹的解决方案
你当前遇到的问题是因为默认的FTP触发器(比如When a file is added or modified)只针对单个文件触发,不会处理文件夹的递归遍历。要复制整个文件夹结构,需要调整流程的结构:
- 第一步,替换触发器为Recurrence(定时触发),根据你的需求设置执行频率。
- 第二步,添加FTP的
List files in folder操作,在这个操作的设置里,找到并勾选Recurse选项(这个就是递归遍历所有子文件夹的关键,你之前可能没注意到这个隐藏的设置项)。 - 第三步,添加
For each循环,遍历List files in folder返回的所有文件条目。 - 第四步,在循环内部添加
Copy blob操作,将FTP文件复制到Azure Blob存储。如果需要保留原有的文件夹结构,记得在Blob的目标路径里用表达式拼接原路径,比如:
这样就能把子文件夹里的文件同步到Blob对应的路径下。@{items('For_each')?['Folder Path']}@{items('For_each')?['Name']}
另外,如果需要只同步新增的文件/文件夹,你可以额外添加一个步骤:用Azure Table Storage或者Blob的元数据来记录已经同步过的文件路径,每次定时触发时先对比过滤,只处理新增的内容。
内容的提问来源于stack exchange,提问作者sanjay
相关产品推荐
相关产品推荐

