curl可以实现ftp/ftps文件传输方案,但是在频繁使用过程中发现curl对文件续传问题的处理存在BUG。如果使用频次较少或者文件较小时问题基本不会发生。当特定网络环境下(国企、政府网络限制多,内网,IP映射等),在较大文件(观察几十M到1个G文件)、多文件并发传输、传输过程丢包时,断点续传后的文件与原始文件并不一致。使用hash、MD5校验等方法验证文件一致性,断点续传时的文件位置调试阶段跟踪和生产环境日志定位,curl返回的位置信息没有问题,但其调用ftp命令后真实传输的数据却是错误的。据此怀疑BUG在curl内部。
同时作为对照,使用filezilla在相同服务器间、批量传输相同文件,没有问题。监测ftpserver端命令,curl调用的命令记录与filezilla命令记录没有逻辑上的不同。据此分析,FTP命令没有问题,BUG就是curl的。
curl做ftp文件传输的方案慎用!(而curl调用web服务一直稳定运行)。