用一根网线直连两台电脑传大文件
只需用以太网将两台计算机直接相连,并进行一些简单的 IP 配置即可:
# 在发送端... ip address add dev eth0 fd42:dead:beef::1/48 ip link set dev eth0 up # 在接收端... ip address add dev eth0 fd42:dead:beef::2/48 ip link set dev eth0 up
几秒钟后,ping 应该就能通了:
# 在接收端... / # ping fd42:dead:beef::1 64 bytes from fd42:dead:beef::1: icmp_seq=1 ttl=64 time=0.649 ms 64 bytes from fd42:dead:beef::1: icmp_seq=2 ttl=64 time=0.376 ms 64 bytes from fd42:dead:beef::1: icmp_seq=3 ttl=64 time=0.414 ms 64 bytes from fd42:dead:beef::1: icmp_seq=4 ttl=64 time=0.340 ms
……而下面的命令也同样可行:
# 在接收端... socat - TCP6-LISTEN:1234 | dd status=progress > big_file.tar.gz # 在发送端... socat - 'TCP6-CONNECT:[fd42:dead:beef::2]:1234' < big_file.tar.gz
这些命令假定您使用的是 Linux 系统,但这一技巧在任何平台上都适用。
一根普通的双绞线和以太网接口就能轻松达到约 900 Mbit/s 的速率,也就是每分钟 6.7 GB。更高端的网卡还能实现高得多的传输速度,但即便如此,也已远超 USB 闪存或云存储的水平。
其他方案
……用于在相距几米的两台机器之间传输 10 GB 左右甚至更大的文件。
云存储:先上传到服务器,再从另一台机器上下载。
大多数情况下,这种方式会极其缓慢,既因为互联网连接普遍较慢,又因为云服务商通常会对流量进行限速。更糟糕的是,文件需要在网络中往返两次,使总耗时翻倍。
此外,除非您已经拥有合适的服务器,否则成本也不低。
局域网内的直接 TCP 连接要好一些,但 Wi‑Fi 的速度仍然很有限,且容易出现断连;那些号称“数千兆”的速率充其量也只是可疑,在典型的家庭网络环境下(墙壁、干扰、长距离等)更是根本无法达到。
不过,如果您的家中布设了千兆以太网线路,这种方法效果会很不错。
可移动存储设备的速度相当慢,除非您愿意投入大量资金。
即便如此,其性能往往还受限于所使用的线缆:USB 理论上支持高速传输……但前提是使用一条近乎“神话般”的完美线缆,并搭配状态完好的接口。
我只见过一对线缆与外设确实能达到千兆级速度,而它们的建议零售价高达约 2300 美元。(而且只有以正确的角度插入合适的 USB 端口时才能奏效)
另外,它也存在与云存储同样的问题——数据必须先拷入再拷出,实际有效速度被折半。与以太网不同,由于 USB 本质上是主从架构,直接将两台计算机相连并不奏效。
实际上,以太网是唯一一种常见接口,能够在廉价线缆的条件下,让任意两台设备可靠地达到千兆级传输速率。它还采用真正的差分传输(内置变压器),因此对射频干扰和地电位漂移有很强的抵御能力。
我认为它在非互联网应用场景中被严重低估,甚至无需组建本地网络——点对点直连即可满足需求。
它也无需 TCP/IP 协议栈:即使是在交换式局域网中,直接使用链路层帧也能正常工作。这为微控制器之间的数据传输提供了一种极为简便的方式。
相关:
- ethtransfer.sh:一个用于文件复制的简单 Shell 脚本