介绍它之前,还是得多说一句,之前推荐的「LocalSend」还是非常好用的,这种的其实比较适合极客;
传输文件的方法有很多种。
除了在传输过程中保留数据的基本必要性之外,共享数据应该快速、安全,而且最重要的是简单。我使用过的大多数文件传输实用程序都包含三分之二的这些品质。我想制作一个包含所有这三者的实用程序,而不损害其中任何一个。
中继 > 上传
文件传输应该尽可能快 – 传输文件所需的时间通常花在等待上。更快的文件传输意味着更少的等待。
传输文件的常见方法是首先将数据上传到服务器,然后,上传后,链接会与下载该文件的人共享。
这种方法很简单,但速度很慢——文件的传输速率是上传和下载速度的调和平均值的一半,这使得它比上传或下载慢。
有比顺序上传和下载更好的方法。相反,您可以使用中继服务器在两台计算机之间创建全双工实时通信层,以便在两台计算机之间同时发生「上传」和『下载』。这有效地提高了传输速率,因为它不是顺序的,并且仅受两种传输模式(上传或下载)中较慢的一个的限制。
密钥交换 > 密码
传输数据应该是安全的。每当您共享数据时,它都会通过可以「查看」数据的服务器网络,因此应该对其进行加密以保持私密性。进行端到端加密的一种常见方法是使用密码。您使用密码加密您的文件,然后发送受密码保护的文件,然后其他人使用相同的密码对其进行解密。
密码很简单,但密码可能很弱。事实证明,许多人使用相同的密码,因此破解加密就像尝试被盗帐户列表中的每个密码一样简单。
弱密码可用于使用 pake: 密码验证密钥交换来创建强密码。 pake 是一种加密方法,两个人共享一个密码,然后通过来回通信使用该密码生成强密钥。然后,强密钥可用于所有进一步的加密。由于两个人通过交换信息生成强密钥,因此即使其他人拥有原始密码,也不可能知道强密钥。
无端口转发 > 端口转发
最后,传输数据应该很简单,最好只用一个命令,不需要维护或其他程序。
但这通常并不容易。
传输文件的另一种常见方法是使用 ssh 或 ftp。这两种协议都很普遍并且使用起来相对简单,但它们的简单性依赖于其中一台计算机运行服务器(如 openssh
),并且需要服务器计算机启用端口转发。几乎可以假设大多数计算机对不满足这些要求(例如,咖啡馆中的两台计算机),因此这使得这些常见实用程序在大多数情况下难以使用。
通过消除托管服务器或端口转发的需要,文件传输可以变得更加容易。同样,使用中继服务器允许任意两台计算机相互连接,而无需诉诸端口转发或摆弄服务器。
croc = 快速 + 安全 + 简单
我一直在开发一个将这些想法牢记于心的开源工具:croc。因为它是开源的,并且以一种易于交叉编译的语言(go)实现,所以它可以在任何地方实现,因此(希望)永远是一种快速、安全且真正简单的数据发送方式。
croc 是唯一可以执行以下所有操作的 cli 文件传输工具:
- 允许任意两台计算机传输数据(使用中继)
- 提供端到端加密(使用 pake)
- 实现轻松的跨平台传输(windows、linux、mac)
- 允许多个文件传输
- 允许恢复中断的传输
- 不需要服务器或端口转发
在开发 croc 的过程中,我从其他 cli 工具(例如 toss 和 magic-wormhole)中获得了很多灵感,它们具有上述部分但不是全部品质。