Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fatedier/fft

A fast distributed file transfer.
https://github.com/fatedier/fft

Last synced: 16 days ago
JSON representation

A fast distributed file transfer.

Awesome Lists containing this project

README

        

# fft

fft 是一个分布式的文件传输工具,可以同时利用多个中转节点来并行传输文件。

## 目的

在两个内网机器之间稳定传输大文件往往需要较高带宽的中转服务器才能够达到两端上传或下载的最大速度,而带宽成本非常高。

有大量低带宽的服务器 (1MB) 长期处于闲置状态,资源没有有效利用。

fft 的目的是充分利用这样的服务器的闲置带宽资源,使发送方和接收方可以同时通过多个中转服务器来传输文件,不再受限于单个服务器的网络带宽上限。

fft 专注于文件传输这一单向大流量的服务,待该项目试验成熟后,会运用于内网穿透([frp](https://github.com/fatedier/frp))中,使内网穿透的服务也不再受限于中转服务器的带宽。

## 开发状态

目前处于早期开发阶段,功能不完善,仅用于测试使用。

master 分支用于发布稳定版本,dev 分支用于开发,您可以尝试下载最新的 release 版本进行测试。

**目前的交互协议可能随时改变,不保证向后兼容,升级新版本时需要注意公告说明。**

## 使用示例

* ffts: server 控制节点,部署一个。
* fftw: worker 节点,负责中转流量,部署任意多个,更多的 worker 节点可以提高传输文件的速度。
* fft: 客户端,用于发送和接收文件。

每一个程序都可以通过 `-h` 来查看使用参数的说明。

ffts 和 fftw 需要部署在有公网 IP 的机器上,且开放对应的端口供 fft 访问。

fftw 和 fft 默认会连接 `fft.gofrp.org:7777` 这个 ffts 服务,如果希望连接自己的 ffts,可以通过 `-s {server_addr}` 来指定自己部署的 ffts 地址。

### 发送文件

`./fft -i 123 -l ./filename`

`-i 123` 指定这次传输请求的 ID,需要是一个和其他人不重复的自定义值,之后将在这个 ID 通知接收方,接收方通过此 ID 来接收文件。

`-l ./filename` 指定需要传输的本地文件路径。

### 接收文件

`./fft -i 123 -t ./`

`-i 123` 指定这次接收传输请求的 ID。

`-t ./` 指定保存文件到本地的路径,如果是目录,则保存发送方的文件名到指定目录,否则会创建一个新的文件。