Linux文件传输工具:CLI和浏览器选项
探索最佳Linux文件传输工具。从命令行工具到浏览器服务,找到Linux上发送文件的完美工具。
在Linux上,选择哪种传输工具取决于目标场景:在自己的机器之间移动文件用rsync、scp、sftp;向外部人员发送文件则用浏览器端传输服务(如HexaTransfer)。服务器间批量复制,rsync -avP --partial是主力工具。临时向非技术用户交付文件,一个URL远比要求对方安装SSH客户端更实用。Linux桌面环境(GNOME、KDE)也通过文件管理器原生支持SMB、WebDAV和SFTP浏览。
命令行经典工具
scp — 通过SSH进行安全复制,语法简洁:
scp bigfile.tar.gz user@server:/home/user/
scp -r folder/ user@server:/path/
失败后不支持断点续传。网络稳定时够用,网络不稳定时令人头疼。OpenSSH 9.0(2022年)将默认协议从SCP-over-SSH切换为SFTP——行为相近,但边缘情况有差异。
rsync — 支持断点续传的增量同步:
rsync -avP --partial source/ user@server:/dest/
参数说明:-a归档模式(保留权限、时间戳、符号链接),-v详细输出,-P显示进度+--partial(失败时保留已传部分)。--bwlimit=50000可将带宽限制在50 MB/s,适合共享链路。
对于源和目标根目录相同的情况,后续rsync只传输变化的字节——重复传输时节省大量时间。
sftp — 基于SSH的交互式文件传输,操作方式类似旧版FTP客户端:
sftp user@server
> put bigfile.tar.gz
> get somefile.txt
rclone — 面向云服务提供商的rsync。支持S3、Google Drive、Dropbox、OneDrive、Backblaze B2及数十种其他服务,适合脚本化上传至对象存储:
rclone copy local/folder remote:bucket/path -P
面向非技术收件人的浏览器端选项
并非所有收件人都有SSH密钥。向记者、客户或家人发送文件时,一个传输服务URL才是真正能用的方案:
| 服务 | 免费上限 | 加密方式 | Linux兼容性 | |---|---|---|---| | HexaTransfer | 10 GB | 端对端AES-256-GCM | 是(任意浏览器) | | WeTransfer | 2 GB | TLS | 是 | | SwissTransfer | 50 GB | TLS | 是 | | Proton Drive分享 | 1 GB | 端对端 | 是 | | Tresorit Send | 5 GB | 端对端 | 是 |
Linux上的Firefox和Chromium均可处理大文件上传。上传性能通常取决于硬件和上行带宽,而非浏览器本身。
桌面环境的局域网传输工具
**GNOME Files(Nautilus):**连接到服务器 > 输入smb://、sftp://、ftp://或dav://。将远程目录挂载为本地目录,适合偶尔浏览。
**KDE Dolphin:**功能相同,界面略有差异,支持同样的协议。
smbclient — 命令行SMB,适合脚本使用:
smbclient //server/share -U user
sshfs — 通过SSH挂载远程文件系统:
sshfs user@server:/remote/path ~/mnt/remote
当应用程序需要本地路径时非常实用。
Linux上的传输速度调优
Linux默认的TCP窗口缩放对高带宽传输处理良好,但部分发行版默认配置较保守。针对长距离高延迟高带宽链路:
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"
在丢包链路上启用BBR拥塞控制以提升吞吐量:
sysctl -w net.ipv4.tcp_congestion_control=bbr
普通家庭网络不需要这些调整——但跨数据中心或跨洲际传输时,默认CUBIC与BBR之间的差距可达2–3倍。
打包归档工具
tar -czf archive.tar.gz folder/ # gzip,速度快,压缩率适中
tar -cjf archive.tar.bz2 folder/ # bzip2,速度慢,压缩率更高
tar -cJf archive.tar.xz folder/ # xz,最慢,最佳压缩率
tar --use-compress-program=zstd -cf archive.tar.zst folder/ # zstd,速度与压缩率兼顾
对现代Linux系统,zstd在速度和压缩率上均优于gzip。向非Linux收件人分发时,坚持使用.zip——zip -r archive.zip folder/。
将大归档包拆分:
tar -czf - folder/ | split -b 2G - archive.tar.gz.part_
重新合并:cat archive.tar.gz.part_* | tar -xzf -。
以对象存储作为传输介质
对于生成大量文件或超大文件的工作负载,将云存储桶作为传输层比一次性服务更合适:
AWS S3:aws s3 cp file s3://bucket/path,然后通过aws s3 presign s3://bucket/path --expires-in 3600生成预签名URL。收件人获得有时限的直接下载链接。
**Cloudflare R2:**兼容S3 API,无出口费用。使用同一aws CLI配合自定义端点。
Backblaze B2:b2 upload-file bucket file key,然后b2 get-download-url-with-auth bucket key 3600。
**MinIO:**自托管S3兼容服务器,从自己的域名签发预签名URL。
对于需要传输构建产物、日志或数据转储的开发者,这些方案优于通用传输服务。
临时HTTP服务器
同局域网内的快速传输:
python3 -m http.server 8000
在http://your-ip:8000/提供当前目录服务。收件人访问URL即可下载。适合笔记本与虚拟机或同一Wi-Fi下的手机之间互传。无加密——仅限内部使用,不适合外部传输。
带自签名证书的HTTPS版本:
python3 -c "import http.server, ssl; httpd = http.server.HTTPServer(('0.0.0.0', 8443), http.server.SimpleHTTPRequestHandler); httpd.socket = ssl.wrap_socket(httpd.socket, certfile='cert.pem', server_side=True); httpd.serve_forever()"
如果有真实域名,caddy file-server可自动提供HTTPS。
P2P传输工具
Magic Wormhole(wormhole):
wormhole send bigfile.tar.gz
# 输出类似 7-crossover-clockwork 的代码
# 收件人运行:wormhole receive 7-crossover-clockwork
端对端加密,可穿越NAT(通过会合服务器)。适合一次性直接传输。
croc(来自schollz):与wormhole类似,单一可执行文件,跨平台,在homelab社区颇受欢迎。
这些工具是点对点的,但仍需通过会合服务器进行NAT穿透——加密是端对端的,但传输路径并非直连。
上传前静态加密
对于高安全级别的工作流,可在通过任何服务发送前先加密归档包:
gpg --symmetric --cipher-algo AES256 bigfile.tar.gz
生成bigfile.tar.gz.gpg。收件人通过gpg --decrypt解密。密码通过带外渠道传递。
或使用现代替代方案age:
age -p -o encrypted.age plaintext.tar.gz
对于端对端加密的传输服务(如HexaTransfer),通常无需双重加密——但面对国家级威胁模型时,双重防护有其意义。
在 hexatransfer.com 上试试 — 免费、无需注册、最多 10 GB。