日期:2014-05-16  浏览次数:20694 次

ftp迁移工具[apache net包]

前言:最近有个需求,要求从一台WINDOWS的服务器上迁移4.5G的文件到HP-UNIX机器,无奈mget不支持文件夹。所以自己基于apache的net包写了个递归FTP迁移文件的工具。

?

工具用Myeclipse开发,附件是直接用Myeclipse explort出来的File System格式的,直接解压放入Myeclipse工程就行了,你可以把这个工程导成jar在你需要迁移的目的机器上执行.

?

就一个主要类FtpDirUtil.java,还有一个配置文件FtpServerZhCfg.properties配置了ftp服务器的listFiles格式实现类,里面这个org.coffeesweet.main.ZhUnixFTPEntryParser是我自己扩展原有的unix的实现类,因为原有的对中文支持不好,自己修改了原有的正则表达式。

?

windows服务器如果用IIS发布FTP服务的话用我这个实现类也可以,因为它FTP上去也是采用的UNIX格式的listFiles;

?

另外加入了ftp的log监控,有网络异常没有传递成功的文件最后会在ftpExceptionLog.txt日志文件中列出,ftpLog.txt中

记录的是正常传递的文件。

?

就这么多了,属于临时解决问题,很粗糙。

?

还有apache-net的1.4版本劝大家别用了,有问题,经常出现connect close reset的问题。而且里面集合都是用vector

实现的,新的2.0后的版本都改为了新的jdk的集合类。

?

2011年1月14日修改

1:增加了本地递归上传文件的功能;

2:修订了原有包的中文目录问题;


执行FtpDirUtil.java类,参数格式:

?

// args[0] download or upload

// args[1] server

// args[2] port

// args[3] user

// args[4] pwd

// args[5] remot dir [absolute] remotDir is always(unix and windows) is '/' begin

// args[6] local dir [absolute]

?


程序没有进行严格的参数判断,自己写符合格式的参数。


本次新增附件名为FtpDirUtil_ZH.rar,原有包没有删除。

?

至于apache-common-net包对中文日期支持的问题,除了我上面采用的配置文件的解决方案,还有下面

链接的方案,感觉比较麻烦,就看你的需要了,你到底需不需要文件的时间等相关属性(中文环境的话)

http://blog.csdn.net/shangzhiliang_2008/article/details/5933511

?

?

1 楼 weiqiang.yang 2011-01-06  
如果文件数量多的话,建议先压成存档文件,然后再ftp或者其他方式移过去,然后释放就行了,注意压缩的时候选"存档",速度很快

先存档的理由是,如果文件数量很多,那么ftp会很慢,大部分时间会花在建立ftp连接,发送各种命令,关闭连接上

想起好久之前实习做过类似的事情..用ftpclient上传数以万记的文件,慢得不得了~~