大文件传输这件事,很多人第一反应是找网盘、发微信、插U盘。可在我的日常工作中——做视频素材交接、训练数据集分发、跨机器备份项目——这些常规手段要么压画质,要么速度拉胯,要么干脆提示文件过大。后来我把几套方案都试了个遍,发现真正能覆盖多数需求的核心招数其实就五类:局域网共享、网线直连、临时HTTP服务、局域网互传工具、以及跨网口令传输。这篇文章把我踩过的坑、常用命令和选型逻辑完整记下来,希望能帮你下次搬大文件时少走弯路。
1. 先搞清楚瓶颈在哪:速度不会超过你最短的那块板
聊具体方案之前,先得明白大文件传输为什么慢。很多人的直觉是“软件不行”,但实际大部分情况是网络拓扑或硬件环节出了问题。
1.1 网速、硬盘速度、网线质量,缺一个都跑不满
在局域网里传一个 20GB 的文件,理论上千兆网口的峰值是 1000Mbps,换算下来约 125MB/s。但实际测速能跑到 110MB/s 已经不错了。原因很简单:数据要从硬盘读出来,经过操作系统、网卡驱动、网线、交换机、路由器,再到另一台电脑的网卡和硬盘写入。这条链路上任何一个环节的峰值速度低于 125MB/s,最终都会被拖到那个最低值。
比如你源文件存在一块机械硬盘里,顺序读取可能只有 120MB/s,但如果你同时还在跑别的任务,磁盘寻道和碎片会让读取掉到 60MB/s 甚至更低。再比如网线用了很多年的 Cat5 普通线,不是 Cat5e 或 Cat6,虽然接口是千兆,但线材抗干扰能力和带宽不够,实际只会协商到 100Mbps,也就是约 12.5MB/s。
遇到过最典型的场景是:两个人同一个办公室,都连同一台千兆路由器,传文件却只有 15MB/s。最后排查半天,发现其中一台电脑用的是 USB 百兆网卡。换了个 USB 千兆网卡后,速度直接翻了六倍以上。
1.2 传输前先自我检查这几个问题
在选方案之前,用几分钟把下面几件事确认清楚,往往比折腾软件更有用。
- 两台电脑是不是在同一个局域网?如果不在,你需要的可能是互联网传文件方案。
- 网卡协商速率是千兆还是百兆?Windows 里可以在“网络连接”里查看网卡状态,显示 1.0Gbps 才是千兆。
- 双方都用的是固态盘里还有没有足够空间?接收端如果磁盘写满或剩余空间不够,传一半会失败。
- 两台电脑之间有没有隔着老旧交换机、电力猫之类的中转设备?电力猫是杀手,别指望它能跑满千兆。
把这些确认完,再去看方法。不要一上来就在微信里拖一个 4GB 视频,然后吐槽“互联网不行”。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 同一WiFi下的硬核方案:SMB共享文件夹
如果两台电脑在同一个路由器下,且都需要持续传文件,SMB 共享是最值得优先掌握的方案。它不需要额外安装任何新的客户端,Windows、macOS、Linux 都有内置支持,传几个百GB的素材都比U盘快。
2.1 两台Windows电脑怎么快速开启共享
假设A电脑是文件所在的机器,B电脑要读取,那就在A电脑上设置共享。
第一步,把连接的网络类型改成“专用网络”。Windows 默认可能把网络识别成“公用网络”,公用网络会禁用网络发现和文件共享,即使你开了共享,另一台机器也搜不到。打开“设置 -> 网络和 Internet -> 属性”,把网络配置文件切换为“专用网络”。
第二步,右键你要共享的文件夹,选择“属性 -> 共享 -> 高级共享”,勾选“共享此文件夹”,然后设置权限。权限这里建议至少给“Everyone”读取权限。如果只是自己两台电脑互传,也可以专门建一个传输账户,避免所有局域网设备都能看到内容。
第三步,访问时不要双击“网络”里慢慢找设备,直接在文件资源管理器地址栏输入:
text复制\\192.168.1.100\share
其中 192.168.1.100 是共享文件夹所在电脑的IP地址,share 是共享名称。这样做通常比在网络列表里等设备刷出来快得多。
如果遇到提示找不到网络路径,多半是防火墙拦截了 SMB 流量。可以在 Windows 防火墙里放行“文件和打印机共享”,或者临时把防火墙关掉测试一下,确认是防火墙问题后再精确添加规则。
2.2 Windows和macOS/Linux混传时的处理
混传并不复杂,关键是允许SMB协议访问。
macOS 访问 Windows 共享,在 Finder 里按 Cmd+K,输入:
text复制smb://192.168.1.100/share
连接时可能需要输入 Windows 账户名和密码。这里有个容易踩的坑:如果你的 Windows 账户是微软在线账户,密码就是微软账户密码,不是 PIN。如果你希望别人能免密访问,可以在 Windows 端开启“Everyone”权限,但这样也不要让共享文件夹里放什么敏感资料。
Linux 下则用命令行挂载,比如:
bash复制sudo apt install cifs-utils
sudo mount -t cifs //192.168.1.100/share /mnt/largefile -o username=yourname
SMB 的老版本协议在Windows 10 之后默认禁用,如果遇到连接冲突或速度极慢,多半是协商到了SMB 1.0。可以检查Windows功能里有没有启用“SMB 1.0/CIFS 文件共享支持”,强烈建议保持禁用,因为老协议在安全性和性能上都不值得为了兼容去开。
2.3 SMB在我实测里的速度表现
用千兆网线连接 + 两台电脑都插固态硬盘时,SMB单线程拷贝大文件可以稳定在 105~115MB/s。这个速度已经非常接近千兆链路的上限。如果是走 WiFi 6,在信号满格、80MHz频宽下也能跑到 80~100MB/s,但稳定性不如有线。
如果实测低于预期,可以用 iPerf3 这类工具先测一下两台电脑之间的纯带宽。排除法很关键:如果 iPerf3 能跑满 900Mbps,但 SMB 拷贝只有 50MB/s,那问题多半出在磁盘或 SMB 配置;如果 iPerf3 本身也只有两三百兆,那问题出在网络链路,先换路由器或网线。
3. 两台电脑只有一根网线?直连也能满速搬数据
有时候没有路由器、没有交换机,也没有公网设备,只有两台电脑和一根网线。这种状态下,很多人觉得没网就没法传,其实完全可以直接用网线把两台电脑的网口连起来,组成一个最简单的两人局域网。
3.1 物理准备和IP地址手动配置
现代网卡绝大多数支持自动翻转(Auto-MDI/X),所以不需要特地去买“交叉线”。只要是正常能用的千兆网线,两头分别插在两台电脑的网口上就行。
接下来要做的是手动配置IP,因为这里没有DHCP服务器,系统不会自动分配到地址。比如左边电脑设成 192.168.2.1,右边电脑设成 192.168.2.2,子网掩码都填 255.255.255.0,网关可以留空,DNS也可以留空。
Windows里配置方法:右键右下角网络图标 -> 网络和 Internet 设置 -> 高级网络设置 -> 更改适配器选项 -> 右键以太网 -> 属性 -> 双击“Internet 协议版本 4”,然后填入上面的静态IP。
macOS 里则是在“系统设置 -> 网络 -> 以太网 -> 详细信息 -> TCP/IP”里把“使用DHCP”改成“手动”,填入 IP 地址即可。
设置完成之后,在两台机器上互相 ping 一下,看能不能通:
bash复制ping 192.168.2.2
如果能正常收到回复,说明物理链路已经通了。此时就可以用前面说到的SMB共享。最简单的办法是在文件资源管理器地址栏输入 \\192.168.2.2\share 访问另一台机器的共享文件夹。
3.2 没有图形界面时,还可以用SSH/SCP
如果其中一台是 Linux 或者 Windows 上开启了 OpenSSH 服务,我习惯直接走命令。在文件所在的那台机器上确认 SSH 服务已启动。以 Ubuntu 为例:
bash复制sudo systemctl enable --now ssh
然后在需要接收文件的那台机器上执行:
bash复制scp ./bigfile.tar.gz user@192.168.2.1:/home/user/
这个命令会把 bigfile.tar.gz 从当前机器复制到 192.168.2.1 这台机器的指定目录。SCP 的好处是你不必在目标机器上配置一堆共享权限,只要你的 SSH 账户能登录,传输就成立。Windows 10/11 现在自带了 OpenSSH 客户端,也可以直接用 scp 命令。
3.3 直连比路由器中转强在哪
直连少了一层路由转发和交换机处理,链路更纯净。尤其是两台电脑都只有 1Gbps 网口时,直连和接千兆交换机理论上限完全一致,但实际直连的延迟更低、抖动更小,传成千上万个碎文件时会更有优势。
遇到的问题是偶尔网线质量差,插上去后网卡只能协商成 100Mbps。判断起来很简单:看网卡状态里的速度。如果显示 100Mbps,换一根短线或者换一头重插试试。很多时候“跳线打得不标准”是罪魁祸首,网口附近的两米线看着没问题,但内部只有四根芯在工作。
4. 不想装任何传输软件:开一个临时HTTP服务让对方直接下载
如果你要给同事或朋友传文件,对方不一定会安装软件,也不一定懂怎么看共享IP。最无门槛的接收方式是什么?让对方打开浏览器下载。
这就是临时 HTTP 文件服务器的用处。它的本质是在你电脑上起一个本地网站,把指定目录暴露成下载链接,对方只要打开链接就能下文件,不需要见账号密码,也不需要理解 “SMB是什么”。
4.1 一行命令搞定Python内置服务
如果发送端电脑装了 Python,这个操作几乎零成本。进入你要共享文件的那个目录,然后执行:
bash复制python3 -m http.server 8000
如果你只想让同一局域网里的机器访问,可以绑定具体的IP地址,而不是暴露在所有网卡上。先查一下本机在内网的IP,比如 192.168.1.100,然后执行:
bash复制python3 -m http.server 8000 --bind 192.168.1.100
此时,另一台电脑打开浏览器输入:
text复制http://192.168.1.100:8000
就能看到一个文件列表,点文件名就直接下载。这个方法特别适合临时性分发,因为对方不需要知道文件存放在哪个磁盘位置,只需要把链接发过去。
Windows 下没有预装 Python 的话,可以用其他办法,比如安装完 Python 后把“Add Python to PATH”勾选上,然后同样执行。如果连 Python 都不想装,那可以安装一个很小的工具比如 Caddy,配置一行:
bash复制caddy file-server --root /path/to/files --listen :8080
Caddy 的好处是单文件、跨平台,但需要去下载对应版本,第一次装比 Python 稍麻烦一点。
4.2 先压缩还是直接暴露目录
传大量小文件时,我强烈建议先打包成单个压缩文件。HTTP 服务对每个请求都单独建立的连接,如果目录里有一万个碎文件,接收端浏览器无法批量断点续传,一个文件失败可能就要重新下载,体验很差。把整个项目打包成一个 zip 或 tar 文件,是避免后续扯皮的最简单方式。
Linux/macOS 打包:
bash复制zip -r project.zip project/
Windows 下直接右键发送到压缩文件夹,效果一样。
如果只是想让对方传文件给你,方便“别人上传”而不是你“分享下载”,Python 自带的 http.server 是不支持上传的。可以装一个额外的 uploadserver 库:
bash复制python -m pip install uploadserver
python -m uploadserver 8000
这样对方浏览器会看到一个上传页面,但直接能上传到你的电脑上。要注意这种 uploadserver 默认没有强认证,在不可信网络里别乱开。
4.3 端口、防火墙和断点续传问题
端口默认用 8000,但有时候会冲突,可以换一个不常用的端口,比如 9000、8080。
如果同一局域网里的另一台电脑打不开页面,先自查防火墙。Python 启动时会弹出一个防火墙提醒,一定要勾选“专用网络”并允许访问。如果之前不小心点了取消,就去“允许应用通过防火墙”里把 Python 加回来。
HTTP 服务自带 Range 请求支持,所以浏览器下载过程中断后,大多数情况下重新点下载会从断点继续,不需要从头再来。但如果你是直接“右键另存为”或用了不完善的下载器,不支持断点续传就麻烦了。用浏览器下载大文件时建议不要关页面,也不要用无痕模式,毕竟无痕模式下临时文件相对脆弱。
5. 多平台混传和移动设备中转:LocalSend是局域网互传里的“另类答案”
有一类工具专门解决“无需配置共享、无需知道IP、图形化互传”的问题,代表就是 LocalSend。它支持 Windows、macOS、Linux、Android、iOS,安装后能在同一局域网内自动发现设备,传输过程不经过第三方服务器,特别适合临时协作。
5.1 为什么我推荐LocalSend而不是某些大厂换机软件
大厂换机软件通常要求所有设备都装同一个生态,或者依赖云账号做中转。在跨系统场景下,比如Windows电脑给iPhone传文件、Linux笔记本给同事的Windows台式机传文件,最常用的是 Localsend、Snapdrop 这类思路。
LocalSend 的原理不复杂:它在本机起一个 HTTPS 服务,并通过局域网广播发现其他设备。A设备发起发送,会弹出一个二维码或设备列表;接收端确认后,文件直接通过本地网络传输。因为数据不走互联网中转,速度上限由你的局域网质量决定,隐私上也更可控。
这种工具不像网盘那样要求“先上传到别人的服务器再下载”,两个人面对面时基本是点两下就开始传输。日常给手机传一个几百MB的视频、给同事传一个几个GB的安装包,体验比找共享文件夹入口要舒服得多。
5.2 实际传输流程和速度观察
LocalSend 的发送流程大概是这样:
- 发送端打开应用,选择要发送的文件。
- 等待接收端出现在设备列表里,或者让接收端扫二维码。
- 接收端收到一个接收确认页,点击“接受”。
- 开始传输,应用展示进度。
我试过在同一台千兆路由器下,两台电脑互传一个 5GB 的ISO镜像,速度能跑到 80~100MB/s,基本接近SMB。手机上通过WiFi 6接收电脑文件时,速度会比电脑间慢,但也能到 40MB/s 左右,这已经比很多网盘肉眼可见的快了。
如果文件是零散的多个,可以在发送前先把它们加入队列。接收端可以设置自动接收,但我不建议默认开自动接收,容易被局域网内误投。手动确认一次只是多点一下屏幕,安全边际高很多。
5.3 设备搜不到的时候先查这三种情况
最常遇到的问题就是打开应用却看不到对方设备。按顺序检查:
- 两台设备是否真的在同一个局域网、同一个IP段。比如一个连的是5G WiFi,一个连的是访客网络,两个网络通常隔离。
- 路由器是否开启了“AP隔离”或“客户端隔离”。这个功能在公共WiFi上常见,一旦开启,设备之间不能互相通信,LocalSend 自然找不到对方。
- 两台设备的防火墙是否拦截了 LocalSend 的入站端口。如果杀毒软件问,允许在专用网络上访问即可。
不要在一个设备上反复刷新列表。LocalSend 的发现机制依赖 UDP 广播,有些路由器会偶尔丢组播包,把两个应用都退掉重新打开,往往问题就消失了。
6. 两台电脑不在同一个网络:Magic Wormhole用一次性口令跨网送文件
前面几种都是局域网范畴,但实际中会遇到这样的问题:我在办公室,要传一个 6GB 的文件给家里电脑。没有公网IP,也没有做端口映射,怎么传?Magic Wormhole 就是为这个场景设计的。
6.1 wormhole send和receive的基本流程
Magic Wormhole 是一个命令行工具,思路上和你发信息给对方类似:发送端生成一串短口令,接收端输入口令就能把文件拉过去。它本身不要求你有公网IP,也不要求双方在同一局域网,只要能访问互联网即可。
安装方式很简单,如果你有 Python:
bash复制python3 -m pip install --user magic-wormhole
或者直接用 pipx 装:
bash复制pipx install magic-wormhole
发送端在文件所在目录执行:
bash复制wormhole send ./video_meeting_raw.mp4
终端会输出一串类似口令:
text复制wormhole receive 7-crossover-clockwork
然后把这行口令原样发给接收端。接收端机器上执行:
bash复制wormhole receive 7-crossover-clockwork
文件就会开始通过中转通道传输。整个口令是单次有效的,传完后立刻失效。传输过程使用密码学方式协商密钥,理论上即使传输路径上有中间环节,也无法看到文件内容。
6.2 Magic Wormhole适合多大的文件、会不会被卡脖子
我平时用 Magic Wormhole 传的都是 2~10GB 的文件,稳定性和隐私上都没出过问题,但它的瓶颈在于中转服务器带宽不归你控制。如果两端连接同一家运营商或都在比较近的网络,速度可能还不错;如果跨运营商跨地区,速度就可能掉到几 MB/s。
所以在需要大批量同步几十GB甚至上百GB时,我不会用 Magic Wormhole,而是优先考虑局域网方案。Magic Wormhole 更适合“临时发一个几个GB的包,不想暴露公网IP、不想配置复杂转发的场景”。
如果想提速,可以在自建的服务器上部署 wormhole-william,或者使用 magic-wormhole.rs 这类兼容实现,把中转服务器换成离自己更近的节点。不过对于大多数用户,不做额外部署、直接用官方服务最简单。
6.3 口令泄漏风险和加密边界
使用 Magic Wormhole 时,口令本身就是一把临时钥匙。如果你通过聊天工具把口令明文发给别人,而这条聊天记录被第三方截获,对方理论上可以把文件拉走。所以通常我会把口令的发送方式换个不常用的渠道,或者生成口令后语音告知,让文件传输这件事增加一点点安全余量。
另外,Magic Wormhole 虽然能保证传输过程中的数据加密,但它不能防止接收端在收到文件后乱传。如果你分享的是真正敏感的内容,更稳妥的流程是“先传一个加密压缩包,口令单独告知”,不要让工具本身承担所有安全责任。
7. 不同传输场景到底怎么选:我的判断标准与几个反常识经验
最后把这套方法放到真实场景里,怎么选其实很简单。
7.1 一张表说清什么时候用哪招
| 现场情况 | 推荐方法 | 理由 |
|---|---|---|
| 两台电脑在同一路由器下,经常互传大文件 | SMB共享或LocalSend | 速度接近本地上限,无需反复扫码 |
| 两台电脑物理位置很近,但没有网络设备 | 网线直连 | 零路由器也能建局域网,速度快且稳定 |
| 对方只是临时接收文件,不愿意装软件 | HTTP临时服务 | 打开浏览器即可下载,几乎没有学习成本 |
| 两台电脑不在同一网络,且不想做端口映射 | Magic Wormhole | 一条口令跨网传输,不需要公网IP |
| 移动设备和电脑混合传输 | LocalSend | 支持全平台,界面友好,不需要数据线 |
这个表格不是绝对。比如你给甲方交付素材,有时候明明就在同一个办公室,但对方IT不给开SMB入站端口,那么HTTP服务就比SMB更合适;如果文件超过50GB,我会在两个有千兆网口的机器间用网线直连,把无线路由器完全抛开。
7.2 速度、便捷、安全三者不可能全都要
传输工具选型本质上是个三角取舍:速度、便捷、安全。局域网共享速度快,但要配账号和权限,第一分钟成本高;HTTP服务最便捷,但默认没加密、没鉴权,绝对不能暴露到不可信网络;Magic Wormhole安全和便捷都不错,但速度天花板受制于中转服务。
我个人的判断顺序是:
- 文件超过 20GB,优先在当地组网,别把时间浪费在跨网上传再下载。
- 文件 2~20GB,需要远程传输时,用 Magic Wormhole 这类工具最省心。
- 文件在局域网里快速转交给不熟悉技术的人,直接开 HTTP 服务。
- 手机和电脑之间互传,LocalSend 比扫码下载安装一个专用App再传更高效。
7.3 被问过最多的小问题,集中回答一次
传大文件时 Windows 提示“文件过大,目标文件系统不支持”?这个通常不是传输方案问题,而是接收盘是 FAT32 格式。U盘和移动硬盘里的 FAT32 分区单文件最大 4GB,NTFS 或 exFAT 没有这个问题。在 SMB/HTTP 传输场景里,如果接收目录在 FAT32 分区,一样会失败。先确认接收端磁盘文件系统再说。
还有一个反直觉的经验:在WiFi下,传一堆零碎小文件比传一个同体积大文件慢得多。因为无线网络的空口时分机制和多用户竞争,每个小文件都要经过握手和确认,所以如果你要传的目录里有一万个小文件,别犹豫,先打包成一个压缩包再传。这一步通常能让总耗时缩短一半。
两台电脑在同一个办公室,却怎么都搜不到对方?先别急着怀疑路由器,先看两台电脑是不是有一个连到了“来宾网络”。很多公司路由器的“Guest WiFi”和“Office WiFi”是彻底隔离的,这种情况无论你开SMB还是LocalSend都无解,切到同一个SSID(同一个网段)再试。
我自己现在的大文件固定流程是这样:同办公室传素材,第一选择是 SMB 共享文件夹;遇到跨办公室但还在总公司局域网内,我会优先用网线直连两台机器的空闲网口,省得跟网络管理员申请权限;如果是远程传送给合作方,那就用 Magic Wormhole 发口令。真正实践过一次后你会发现,大文件传输没有那么玄乎,关键是别让“文件太大”这四个字成为你们协作的卡点。工具越简单越好,链路越短越快,这个原则在什么时候都管用。
