在本文档中,作者分享了一个使用Apache NiFi进行服务器文件远程备份的具体案例。NiFi(NiFi Dataflow)是一个开源的、基于数据流的平台,用于实时数据集成、转换和监控。在这个案例中,目标是定期从GitLab生成的备份文件中,利用NiFi的SFTP(Secure File Transfer Protocol)功能,将这些文件自动同步到另一台服务器作为备份。
首先,应用场景设定为从源服务器的指定目录通过SFTP协议获取文件。NiFi中的ListSFTPprocessors负责检索远程服务器上的文件列表,并利用其缓存功能,只有在目录下有文件更新时才会触发新的同步。这个处理器提供了增量备份的功能,仅同步新添加或修改的文件。
配置过程中,需要填写远程服务器的IP地址、SSH端口、登录用户名和密码,以及文件所在的远程路径。随后,为了实现只同步当天的备份文件,作者使用了UpdateAttributeProcessors来解析文件的日期,通过文件名中的日期信息进行筛选。设置一个表达式检查文件名是否非空,并创建一个名为FileDate的新属性,存储日期格式为"yyyy-MM-dd"。
接下来,RouteOnAttributeProcessors被用来根据文件日期属性将文件路由到相应的处理阶段,过期或不符合条件的文件会被忽略。具体来说,FetchSFTPprocessor用于抓取选定的文件,它的配置与ListSFTPprocessors类似,包括主机名、端口、用户名和密码,以及远程文件路径。
同步完成后,文件被保存到本地备份服务器(在本例中,NiFi本身作为备份服务器)。PutFile处理器被用于将文件放入备份目录,支持冲突解决策略,如直接覆盖(replace)。如果需要将文件同步到远程备份服务器,可以选择PutSFTP。
最后,任何失败的操作会被记录并引入LogAttributeProcessors,以便于监控和故障排查。整个过程体现了NiFi的强大功能,能够自动化管理文件同步任务,提高备份效率,并减少人工干预的需求。
这个案例不仅展示了NiFi在文件同步中的实际应用,还突出了其灵活的配置和事件驱动的工作方式,使得IT人员能够轻松地定制数据传输流程,满足不同场景下的数据备份需求。