# transfer.core
**Repository Path**: acproject_admin/transfer.core
## Basic Information
- **Project Name**: transfer.core
- **Description**: 文件批量传输组件适用于后台服务器之间文件批量传输,能对某个文件夹进行自动监控、多线程批量传输、文件md5对比、错误重传,也能满足中转传输情况(外网服务器把文件传至中转服务器,中转服务器触发再将文件传送至目标服务器,传输结果消息返回给源服务器)。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 12
- **Created**: 2020-07-21
- **Last Updated**: 2022-06-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
**文件批量传输组件**
文件批量传输组件适用于后台服务器之间文件批量传输,能对某个文件夹进行自动监控、多线程批量传输、文件md5对比、错误重传,也能满足中转传输情况(外网服务器把文件传至中转服务器,中转服务器触发再将文件传送至目标服务器,传输结果消息返回给源服务器)。
1. 可直接独立成单独的客户端和服务端系统,支持配置。
2. 可作为工具架包,其他系统可调用方法进行文件传输相关操作
3. 支持文件夹监控,自动传输
4. 支持各种类型的文件多线程传输
5. 支持文件md5对比,错误重传
6. 支持中转传输
7. 支持安全权限验证
8. 可自定义拦截器、回调类,易扩展
#### 直接使用(编译好的文件在build文件夹下):
####1、两台主机之间传输配置:
两台主机之间传输时,发送文件主机要部署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启动:
```
serverReceiveControl
```
####2、中转传输配置:
一台主机把文件传输给中转服务器,中转服务器再把文件传输至第三台主机时,接收文件主机和中转主机都要部署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进行启动:
```
serverReceiveControl
```
#####c. 目标文件接收的主机也是部署transfer_server项目,修改配置信息fileserver.xml文件,打开transfer_server.bat进行启动:
```
serverReceiveControl
```
#### 其他
作为架包调用见: http://my.oschina.net/passerman/blog/715744
原理说明见: http://my.oschina.net/passerman/blog/715707