文件批量传输组件git
文件批量传输组件适用于后台服务器之间文件批量传输,能对某个文件夹进行自动监控、多线程批量传输、文件md5对比、错误重传,也能知足中转传输状况(外网服务器把文件传至中转服务器,中转服务器触发再将文件传送至目标服务器,传输结果消息返回给源服务器)。缓存
####一、两台主机之间传输配置: 两台主机之间传输时,发送文件主机要部署transfer_client项目;接收文件主机部署transfer_server项目。 #####a.发送文件的主机部署时,修改里面的sysinfo.properties信息,而后打开transfer_client.bat进行文件夹监控:安全
#要监控的文件夹,当isMonitor=true有效 monitorPath=E:\\upload #是否用md5校验 isMd5Check=true #是否中转传输 isTransit=false #文件要发送给的主机ip,若是isTransit为true是中转服务器ip,false则为目标ip sendToIp=localhost #文件要发送给的主机端口,若是isTransit为true是中转服务器端口,false则为目标端口 sendToPort=111 #目标主机的ip,若是isTransit为true则无效 targetIp= #目标主机的端口,若是isTransit为true则无效 targetPort= #接收消息端口 receiveMsgPort= #定时任务每隔多少时间执行一次,单位毫秒 timerTaskPeriod=50000 #超时时间,毫秒 sendTimeout=18000000 #错误重传次数 failResendCount=3 #是否进行安全权限验证(若是文件接收服务器开启了,必须开启),为true会开启权限验证,其内部为增长一个验证拦截器 isAuthorityCheck=false #权限验证密锁(要跟文件接收服务器对应),必须isAuthorityCheck为true时有效。 authorityKey=password111 #缓存名,若是多个文件夹监放任务要用不一样的缓存名,这里因为只有一个监放任务,可不写 cacheName=cachename1
#####b.文件接收的主机是修改transfer_server项目下fileserver.xml,运行transfer_server.bat启动:服务器
<?xml version="1.0" encoding="utf-8"?> <config> <!-- port:服务器接收端口 filePath:文件接收保存的路径 soTimeout:文件接收超时时间 poolSize:文件接收线程池大小 isTransitServer:是否做为中转服务器 isAuthorityCheck:是否须要安全权限验证(须要拦截器中加入AuthorityServerFilePlugin插件),若是为true,客户端必定也要开启权限验证,而且authorityKey要相等 authorityKey:密锁,当isAuthorityCheck为true有效 --> <fileserver port="111" filePath="E:\test\file" soTimeout="" poolSize="5" isTransitServer="false" isAuthorityCheck="false" authorityKey="password111" > <!-- 拦截器 --> <plugins> <plugin class="com.filetransfer.plugin.LogServerFilePlugin" ></plugin> <plugin class="com.filetransfer.plugin.AuthorityServerFilePlugin" > <param>serverReceiveControl</param> </plugin> </plugins> </fileserver> </config>
####二、中转传输配置: 一台主机把文件传输给中转服务器,中转服务器再把文件传输至第三台主机时,接收文件主机和中转主机都要部署transfer_server项目。文件发送主机使用transfer_client项目。多线程
#####a. 发送文件的主机部署transfer_client项目,修改sysinfo.properties信息,而后打开transfer_client.bat进行文件夹监控:工具
#要监控的文件夹,当isMonitor=true有效 monitorPath=E:\\upload #是否用md5校验 isMd5Check=true #是否中转传输 isTransit=true #文件要发送给的主机ip,若是isTransit为true是中转服务器ip,false则为目标ip sendToIp=192.168.1.100 #文件要发送给的主机端口,若是isTransit为true是中转服务器端口,false则为目标端口 sendToPort=111 #目标主机的ip,若是isTransit为true则无效 targetIp= 192.168.1.101 #目标主机的端口,若是isTransit为true则无效 targetPort=102 #接收消息端口 receiveMsgPort=201 #定时任务每隔多少时间执行一次,单位毫秒 timerTaskPeriod=50000 #超时时间,毫秒 sendTimeout=18000000 #错误重传次数 failResendCount=3 #是否进行安全权限验证(若是文件接收服务器开启了,必须开启),为true会开启权限验证,其内部为增长一个验证拦截器 isAuthorityCheck=false #权限验证密锁(要跟文件接收服务器对应),必须isAuthorityCheck为true时有效。 authorityKey=password111 #缓存名,若是多个文件夹监放任务要用不一样的缓存名,这里因为只有一个监放任务,可不写 cacheName=cachename1
#####b.中转服务器部署transfer_server项目,修改配置信息fileserver.xml文件,打开transfer_server.bat进行启动:ui
<?xml version="1.0" encoding="utf-8"?> <config> <!-- port:服务器接收端口 filePath:文件接收保存的路径 soTimeout:文件接收超时时间 poolSize:文件接收线程池大小 isTransitServer:是否做为中转服务器 isAuthorityCheck:是否须要安全权限验证(须要拦截器中加入AuthorityServerFilePlugin插件),若是为true,客户端必定也要开启权限验证,而且authorityKey要相等 authorityKey:密锁,当isAuthorityCheck为true有效 --> <fileserver port="111" filePath="E:\test\file" soTimeout="" poolSize="5" isTransitServer="true" isAuthorityCheck="false" authorityKey="password111" > <!-- 文件接收回调, class为类的路径 --> <!-- <fileReceiveCallBack class="com.filetransfer.server.fileserver.callback.TransitFileReceiveCallBack" > <param>serverReceiveControl</param> </fileReceiveCallBack> --> <!-- 中转时发给源主机消息的适配器 --> <!-- <sendMessageAdapter class="com.filetransfer.client.message.defaultadapter.EdenSendMessageAdapter" > </sendMessageAdapter> --> <!-- 拦截器 --> <!-- 拦截器 --> <plugins> <plugin class="com.filetransfer.plugin.LogServerFilePlugin" ></plugin> <plugin class="com.filetransfer.plugin.AuthorityServerFilePlugin" > <param>serverReceiveControl</param> </plugin> </plugins> </fileserver> </config>
#####c. 目标文件接收的主机也是部署transfer_server项目,修改配置信息fileserver.xml文件,打开transfer_server.bat进行启动:.net
<?xml version="1.0" encoding="utf-8"?> <config> <!-- port:服务器接收端口 filePath:文件接收保存的路径 soTimeout:文件接收超时时间 poolSize:文件接收线程池大小 isTransitServer:是否做为中转服务器 isAuthorityCheck:是否须要安全权限验证(须要拦截器中加入AuthorityServerFilePlugin插件),若是为true,客户端必定也要开启权限验证,而且authorityKey要相等 authorityKey:密锁,当isAuthorityCheck为true有效 --> <fileserver port="112" filePath="E:\cfile" soTimeout="" poolSize="5" isTransitServer="false" isAuthorityCheck="false" authorityKey="password111" > <!-- 拦截器 --> <plugins> <plugin class="com.filetransfer.plugin.LogServerFilePlugin" ></plugin> <plugin class="com.filetransfer.plugin.AuthorityServerFilePlugin" > <param>serverReceiveControl</param> </plugin> </plugins> </fileserver> </config>
做为架包调用见: http://my.oschina.net/passerman/blog/715744
原理说明见: http://my.oschina.net/passerman/blog/715707
源码见http://git.oschina.net/passer/transfer.core插件