在公网上, SFTP|SMB|WebDAV 哪种文件传输协议是最高效、低延迟的?适合传输大量小文件?

6 天前
 kenvix

高效 定义:协议传输延迟低,报文开销小,例如进入并列一个大目录并且可以瞬间完成,并且没有多少报文开销。

用途:在远程客户端上提供类似文件管理器的视图,因此,不考虑 tar 打包这种。

目前已知 SFTP 的开销是远小于 WebDAV+HTTPS 的。

FTP 、FTPS 费拉不堪,已经被淘汰。

那么 SFTP 、SMB-TCP 、SMB-QUIC 、SCP 比起来呢?或者还有什么别的协议?

4338 次点击
所在节点    NAS
42 条回复
kenneth104
6 天前
大量小文件,我觉得没办法
Jinnrry
6 天前
插眼。

但是我盲猜,这些协议都这么多年了,应该都优化了好多个版本了,讲道理,性能应该优化得大差不差了吧?特别是公网传输,我盲猜区别不大
killgfat
6 天前
SMB over Quic 有点太新了,不知道 Samba 什么时候能支持
kenvix
6 天前
@Jinnrry #2 我认为还是有的,协议本身可能 OK ,但是还得考虑实现的质量。以 FTP 为例,传输需要多次往返,就意味着效率非常差。以 WebDAV 为例,客户端和库的实现质量参差不齐,有的连 H2 都没实现,导致头部开销特别巨大。
tool2dx
6 天前
看掉包率了,如果大于 5 ~ 10%,只能上 KCP ,你也没别的解决办法。

我自己测试下来,不掉包 FTP 挺快的,但是没加密不安全。sftp 也是鱼龙混杂,我遇到过魔改 dropbear 的,那速度真是绝了,要多慢有多慢。

用 openssh 最新版本,感觉也还行。SMB 和 SFTP 不太好直接对比,前者 windows 后者 linux 。
ntedshen
6 天前
webdav 这玩意一发一堆 206 包,能快才见鬼。。。
性能也就 cyberduck 能打,我反正没见过第二个性能能看的客户端。。。

ftp 讲道理主要问题是端口一大堆,性能没问题。。。
ftps 走 tls 性能就不可能比 webdav 低,何况还有客户端支持,除非代码真的写太烂了。。。
但是上公网开一堆端口确实麻烦。。。

sftp 这玩意证书加密的,开销真的小么。。。

smb 这玩意的实现怕是比 webdav 都少,我反正没写过这玩意的代码。。。
不过倒是真没啥毛病。。。
lt0136
6 天前
对于大量小文件的场景,我用 tar cf - $DIR | ssh $HOST "tar xf -" ,感觉速度还行。
dasf53adf
6 天前
用 NFS 呢?
lt0136
6 天前
@lt0136 没仔细审题,不考虑 tar 。那没事了😂
0x663
6 天前
iSCSI 快一点吧?
bbsingao
6 天前
rclone 可以并发处理多个文件.你试试
ericFork
6 天前
试试 sshfs
billccn
6 天前
我约 10 年前临时外派到澳大利亚,但域控里我的 Home dir 还是在欧洲,只要打开个文件浏览器就得等几秒,当地办公室还是内网专线,在外面 VPN 就更怀疑人生,所以千万不要在非本地网情况下用 SMB 。我坚持了几天以后和欧洲的 IT 要了一个虚拟机,远程桌面回欧洲。

楼主的需求是需要管理文件比较多,还是需要打开文件比较多?前者可以考虑用 UDP 的远程桌面,这样丢包也不太影响操作效率。

@0x663 公网上跑 iSCSI ?妥妥要损坏文件系统

题外:公司在我外派结束不久还来调研我的体验,最后决定购买一套 Riverbed Steelhead 加速器,这个神奇的机器可以中间人一些常见的企业内网协议,然后通过它专有的协议解决长延迟、高丢包的传输,上线一周以后异地备份就从 5-6 个小时变成几十分钟,同事也反应跨区访问文件非常流畅。我今天搜了一下这个加速器好像不迭代了,不知道是不是因为企业都上云了。
fuis
6 天前
公网的话,如果只能上面的选项选择,我可能只会选 WebDAV ,毕竟支持广泛;私网的话肯定是 SMB over RDMA 延迟最低,适合大量小文件。

然后我对这个描述有些疑问,“例如进入并列一个大目录并且可以瞬间完成,并且没有多少报文开销”,瞬间完成,跟报文开销的关系并不大吧。常见的 S3 走 https ,list objects 也是很快的(带分页),并且也可以支持大量小文件。我猜测这个问题的原始问题在于需要有一个对象的元数据服务,因为缺少这个服务导致了需要走 list 接口
libook
6 天前
SMB 很多压测数据表明很慢,实际使用确实很慢,小文件是灾难;
WebDav 协议很重也快不了;
这三者相对来说 SFTP 最快。

不加密的协议可能会更快,比如 NFS ,但因为本身连认证都没有,所以不大适合临时性的文件传输和公网的传输,适合局域网内长期独占挂载。

同样走 SSH 的话,可能 scp>rsync>sftp>sshfs ,当然具体也看参数优化和传输的文件情况。
hetal
6 天前
rsync 最好用
dann73580
5 天前
rclone 作为客户端并发远远快于其他的方式,另一段我个人是挂载的 sftp 。在一个有 60w 小文件,10t 总大小的场景,两端延迟超过 150ms,传输速度在 500Mbps 浮动,我觉得很不错的水平。
wheat0r
5 天前
webdav 的优势是实现简单、容易加密,别的就算了
lonelyparasol
5 天前
SMB 只在 Windows 局域网用过
google2023
5 天前
@ntedshen ftp 的被动模式端口,也是可以定制的,所以不需要太多端口。但 ftp 肯定不适合传大量小文件,频繁建立 tcp 连接,以及配套的 ftp 控制命令,都很耗费时间,小文件多传输效率会很低

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1072681

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX