Croc文件传输工具
什么是croc
croc是一种允许任意两台计算机简单安全地传输文件和文件夹的工具。AFAIK,croc是唯一可以执行以下所有操作的CLI 文件传输工具:
croc适用场景
允许任意两台计算机传输数据(使用中继)
提供端到端加密(使用 PAKE)
实现轻松的跨平台传输(Windows、Linux、Mac)
允许多个文件传输
允许恢复被中断的传输
不需要本地服务器或端口转发
ipv6 优先和 ipv4 回退
可以使用代理,比如tor
使用方法
croc源码分析
文件传输过程
我们可能会好奇,为什么我执行了croc xxx 就能接收到其他机器发送的文件呢
经过源码分析发现,传输过程主要有三个角色,sender,relay, receive
sender
当我执行croc send hosts的时候本地会启动一个sender,sender内部会启动对外服务的端口,创建一个room, 一个room只允许存在两个连接,一个发送者,一个接收者,此时还未出现接收者,所以room内需要保持发送者的连接,同时会生成一个room的code与password(可选项),并且将room外网地址, code 发送至 relay服务中,如果未设置relay服务,默认使用 croc.schollz.com:9009(可自行搭建)
relay
存储着room的信息,能让接收者通过code查找到连接地址
receive
croc code 可以添加--relay参数指定relay, 如果未指定默认使用croc.schollz.com:9009, relay查找到code对应的sender的连接地址,reveive连接上sender的指定room, 输入password(可选),进入room后此时存在两个连接了,sender开始将文件数据传输给receive,结束后断开连接,关闭room
如何实现断点续传
上传过程中记录读取块位置,使用固定块传输,类似dd命令,进行文件传输
请到客户端“主题--自定义配置--配置”中填入leancloud_appID和key