scp 为什么比 sftp 快那么多? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
lysShub
V2EX    程序员

scp 为什么比 sftp 快那么多?

  •  
  •   lysShub 350 天前 7646 次点击
    这是一个创建于 350 天前的主题,其中的信息可能已经有所发展或是发生改变。

    都是上传一个文件到同一机器,在洛杉矶; sftp 平均下来只有 200KB/s, scp 能有 2-3MB/s 。

    根据我查的资料,这两个都是基于 ssh 连接的,为什么有那么大差距?

    44 条回复    2024-10-31 14:42:29 +08:00
    bestsanmao
        1
    bestsanmao  
       350 天前   1
    协议一样 线路一样
    速度差别有 10 倍之大
    猜测:
    首先,你传的文件压缩率比较大 比如文本文件
    其次,两个软件 一个开启了压缩一个没有开启
    Remember
        2
    Remember  
       350 天前
    scp 类似 udp ,可靠性低速度快,sftp 相反。
    jack778
        3
    jack778  
       350 天前
    SFTP 上传速度 (200KB/s) 远低于 SCP 上传速度 (2-3MB/s) 在同一机器、相同网络环境下,确实不太寻常。以下是一些可能导致这种差异的原因分析,希望能帮您找到问题所在:

    1. 加密算法和开销:

    SFTP (基于 SSH 协议) 使用加密传输,默认情况下会协商更强的加密算法,这会带来更高的 CPU 开销,尤其是在处理大量小文件时,加密/解密过程会成为瓶颈。
    SCP (基于 SSH 协议的远程复制) 也使用加密,但通常使用更简单的加密算法,例如 AES-128 ,相对 SFTP 来说,加密开销更低。
    2. 协议和实现差异:

    SFTP 是一个交互式文件传输协议,需要更多的控制信息交互,例如文件列表、权限管理等,这会增加网络传输的负担。
    SCP 则更专注于文件复制本身,传输过程更加直接,减少了不必要的交互。
    3. 服务器配置:

    SFTP 服务器的配置可能会影响传输速度,例如最大连接数、带宽限制、缓存设置等。
    SCP 通常依赖于 SSH 服务器的配置,如果 SSH 服务器配置不合理,也可能影响 SCP 的速度。
    4. 客户端配置:

    SFTP 和 SCP 客户端的配置也可能影响传输速度,例如缓冲区大小、并发连接数等。
    5. 网络环境:

    虽然您提到是在同一台机器上进行测试,但网络延迟和丢包率仍然可能对传输速度产生影响,尤其是在网络状况不佳的情况下。
    建议您尝试以下方法排查问题:

    检查 SFTP 服务器的配置: 查看是否有带宽限制、连接数限制等,并尝试调整相关参数。
    尝试不同的 SFTP 客户端: 不同的 SFTP 客户端可能使用不同的加密算法和实现方式,尝试使用其他客户端,例如 FileZilla 、WinSCP 等,看看是否能提升速度。
    使用 scp -v 或 sftp -v 命令开启详细日志: 分析日志信息,查看是否有错误或警告信息,并尝试根据日志信息调整相关参数。
    尝试使用更简单的加密算法: 在 SFTP 客户端中,尝试选择 AES-128 等更简单的加密算法,看看是否能提升速度。
    排除网络环境问题: 使用 ping 命令测试网络延迟和丢包率,确保网络环境稳定。
    总结:

    SFTP 和 SCP 都是基于 SSH 的安全文件传输协议,但它们在协议设计、加密算法、实现方式等方面存在差异,导致在某些情况下,SCP 的速度可能会比 SFTP 更快。通过仔细分析和排查,您可以找到导致 SFTP 速度缓慢的具体原因,并采取相应的措施提升传输速度。
    eggt
        4
    eggt  
       350 天前
    rsync 又比 scp 快的多
    Donaldo
        5
    Donaldo  
       350 天前
    @jack778 #2 坛子里不允许回复 AI 生成的内容
    weijancc
        6
    weijancc  
       350 天前
    这其实是你 sftp 客户端的问题, 如果是多线程上传, 实际上 sftp 是能跑满速的
    lysShub
        7
    lysShub  
    OP
       350 天前
    @bestsanmao 我那文件大概只能压缩一半
    realpg
        8
    realpg  
    PRO
       350 天前
    不动系统默认的 openssh-server
    scp sftp 都是慢的突破天际 半斤八两
    iminto
        9
    iminto  
       350 天前 via Android   1
    @jack778

    ai 回复,一文不值,通篇没有任何有用信息。。。
    xqzr
        10
    xqzr  
       350 天前   1
    @Livid #3 AI
    FishBear
        11
    FishBear  
       350 天前 via iPhone
    流传输,多线程,最重要的是多线程,因为多个连接一起发,通常单线程连接比多线程连接慢
    sky96111
        12
    sky96111  
       350 天前
    @realpg 冷知识:openssh-server 就是 sftp 的一个实现
    realpg
        13
    realpg  
    PRO
       350 天前
    @sky96111 #12
    额 你看明白我在说什么了吗?
    sky96111
        14
    sky96111  
       350 天前 via Android
    @realpg 好吧,我理解错了。我以为你打错字了,不动系统的 openssh-server->不如系统的 openssh-server
    Livid
        15
    Livid  
    MOD
    PRO
       350 天前
    @xqzr 3 楼的账号已经被彻底 ban 。
    realpg
        16
    realpg  
    PRO
       350 天前   2
    @Livid #15
    这个要不要先 at 警告一次再 ban 啊
    我也算高强度 V2 用户,要不是这个帖子我还真没注意到 V2 加了规则不允许直接发 ai 生成内容
    Livid
        17
    Livid  
    MOD
    PRO
       350 天前
    @realpg 这个规则已经执行了超过半年了。这就是为什么你几乎在这里看不到这种 AI 生成的长篇大段的回复,之前这么干的账号都已经被清理了。
    Livid
        18
    Livid  
    MOD
    PRO
       350 天前
    @realpg 如果要实现这样先警告 X 次再彻底 ban 的系统,意味着还需要存储和读取一个账号之前是否被警告过的记录,我们没有这样的系统。
    vituralfuture
        19
    vituralfuture  
       350 天前 via Android
    ban 得好,贴 AI 回复的占那么大篇幅,我甚至都形成条件反射了,看到开头一句疑似 AI 直接快速下滑
    realpg
        20
    realpg  
    PRO
       350 天前
    @Livid #18
    没必要那么严谨 一般警告一次很难再犯的
    defaw
        21
    defaw  
       350 天前
    在一篇文章中看到过说 sftp 的滑动窗口机制有 bug ,再具体的忘了,你可以搜搜看
    msg7086
        22
    msg7086  
       350 天前   4
    @Livid 在下面回复框的空白处加一个简单的警示信息如何。
    虽然规则已经执行很久,但规则似乎并不容易被人熟知。
    一般社群会有一个专门的社群规则链接,而 v 站的规则是写在关于里的,我相信很多坛友都会错过这个链接。
    Livid
        23
    Livid  
    MOD
    PRO
       350 天前   3
    @msg7086 用 AI 回复这种事情,只有非常少数的账号干过,清理一个就少一个。不会因为极少数人的行为,而在界面上增加其他 99% 的人的阅读心智负担。
    airqj
        24
    airqj  
       349 天前   3
    @Livid 在“添加新回复”旁边加个"(禁止 AI 回复)"就好
    PS: 天天逛 v2 也不知道有这个规定
    tool2dx
        25
    tool2dx  
       349 天前 via Android
    ai 回复只适合于生活这个 tag ,不太适用于技术提问,具体问题具体分析,不同情况下原因差别还是挺大的。
    楼主这个问题,ai 明显就是无效回复。
    iden
        26
    iden  
       349 天前
    太可怕了
    julyclyde
        27
    julyclyde  
       349 天前
    @Remember scp 咋就可靠性低了?你的证据呢?
    julyclyde
        28
    julyclyde  
       349 天前
    @jack778 scp 和 sftp 的加密都在 ssh 里,不在 scp/sftp 自己这一层,哪儿来的加密算法不同这一说?
    julyclyde
        29
    julyclyde  
       349 天前
    @weijancc sftp 可以多线程上传吗?
    rqYzyAced2NbD8fw
        30
    rqYzyAced2NbD8fw  
       349 天前
    @tool2dx #25 同意。简单的问题用 AI 回复有讽刺效果 (你问 AI 去就可以了为什么要贴出来浪费大家时间),三楼这个回复就是一坨,有点类似我电脑驱动掉了然后你告诉我“你有没有试过重启,清理垃圾,升级系统,重装系统,更新 BIOS ,把所有的键帽拔下来抄了吃啊”?
    AmomA
        31
    AmomA  
       348 天前
    `SCP`( Secure Copy Protocol )通常比 `SFTP`( SSH File Transfer Protocol )快,主要是由于这两种协议在设计和处理文件传输的方式上的不同。具体来说,以下几点解释了 `SCP` 通常比 `SFTP` 更快的原因:

    ### 1. **协议的简化设计**
    - **SCP**:是一个更简单的协议,它一次性传输文件数据,类似于直接复制文件。SCP 使用了单向的数据流,只要文件数据从源端传输到目的端即可,中间不进行复杂的控制操作,也没有文件的浏览、权限修改等功能。整个过程通过 SSH 加密传输数据,但传输过程比较直接,协议设计上更轻量。
    - **SFTP**:是一个功能更复杂的协议,支持文件浏览、修改权限、断点续传等功能。由于这些附加功能,SFTP 会涉及更多的握手、控制、确认等操作。每个传输块( block )都需要确认,导致了额外的通信延迟,从而降低了整体传输速度。

    ### 2. **数据传输模式**
    - **SCP**:数据传输是一次性完成的,不涉及很多交互。它类似于直接通过 SSH 加密通道传递数据,一次传输的文件较少被分割,减少了传输过程中的协议开销。
    - **SFTP**:数据传输过程中,需要分块传输,每个块传输之后还需要目的端的确认( acknowledgment )。这种块级别的传输会引入额外的等待时间,特别是在高延迟网络中,显得更加明显。

    ### 3. **文件处理方式**
    - **SCP**:不具备文件的操作和管理功能,它只负责文件的传输。这意味着 `SCP` 只需将文件内容通过 SSH 通道发送即可,减少了控制指令的交互。
    - **SFTP**:则不仅仅是文件传输,还支持文件管理功能,比如创建目录、修改权限、查看文件等。因此,SFTP 通常会有额外的元数据传输和处理。这些附加功能的处理需要占用更多的时间,尤其是在传输大量小文件或需要频繁目录操作时,SFTP 的处理速度会更慢。

    ### 4. **数据流控和确认机制**
    - **SFTP**:有着严格的数据流控制和确认机制。每传输一个数据块,SFTP 必须等待接收方的确认后才能继续传输下一个数据块。虽然这种机制可以确保数据传输的可靠性和完整性,但同时也引入了额外的延迟。
    - **SCP**:没有复杂的流控机制,数据流是连续的。由于不需要等到接收方的确认后再发送下一部分数据,因此传输速度通常比 SFTP 快。

    ### 5. **数据压缩与加密开销**
    - **SCP** 和 **SFTP** 都是通过 SSH 进行加密传输的,因此在加密算法的开销上是相似的。然而,SFTP 的额外交互(例如确认、握手)会增加整体的开销,而 SCP 仅处理文件流,因此相对效率更高。
    - 在加密和压缩算法方面,传输文件时都可以选择使用压缩选项来提高传输效率,虽然这个选项对两者的影响相似,但 SCP 的简单数据流会更受益于此。

    ### 6. **网络延迟和带宽利用效率**
    - **SCP**:在低延迟的网络环境中表现得更好,因为它不会受到多次握手和确认机制的拖累。
    - **SFTP**:由于每传输一个块都需要确认,网络延迟越高,传输速度受影响就越大。即使带宽很大,SFTP 可能也无法充分利用带宽,而 SCP 可以更有效地利用高带宽来提高传输速度。

    ---

    ### 结论
    `SCP` 比 `SFTP` 快的主要原因是 SCP 协议更简单、传输过程中的控制开销更少,并且没有复杂的确认和管理功能。因此,对于单纯的大文件传输,`SCP` 通常更高效。如果你需要更复杂的文件管理功能,或者需要进行小文件的频繁传输操作,`SFTP` 虽然稍慢,但提供了更全面的控制和功能。

    简而言之:
    - 如果你需要快速地传输大量文件或大文件,**SCP 是更合适的选择**。
    - 如果你需要对远程文件系统进行浏览、文件权限管理、断点续传等操作,**SFTP 更合适**,虽然会牺牲一些速度。
    wangyzj
        32
    wangyzj  
       348 天前
    @Livid #15 我都没注意这个规则,直接 ban 不给机会的么?
    wangyzj
        33
    wangyzj  
       348 天前
    @AmomA #31 这个也 AI 了吧
    rink9oled3
        34
    rink9oled3  
       348 天前 via iPhone
    我遇到过,是因为软件本身问题,你是用什么软件?

    PS:用 ai 回答贴出的用户 ban 了,为什么不顺便把回复也删除了?差点认真读了。
    suofeiya
        35
    suofeiya  
       348 天前
    @AmomA 哥们儿上面用 AI 的都被 ban 了,你还发.
    chenqh
        36
    chenqh  
       348 天前
    所以有什么办法可以加速 sftp 的传输文件,最好是通过改 client 那边
    AmomA
        37
    AmomA  
       348 天前
    @suofeiya 刚开始玩,不知道这个规则,下次注意,谢谢提醒
    kobe718
        38
    kobe718  
       348 天前
    @AmomA 你如果爬了楼,就应该知道没有下次的机会了。。。
    ugpu
        39
    ugpu  
       348 天前
    @Livid 我几乎每天刷 V2 也并不知道 禁 AI 回复.
    skyfore
        40
    skyfore  
       348 天前
    @Livid 确实也不知道,而且现在 AI 使用还是比较常见的。
    swLoXtOtd89pGg8t
        41
    swLoXtOtd89pGg8t  
       348 天前
    @skyfore #40 如果想看 ai 的内容可以自行搜索,v 站不允许 ai 注水确实控制的不错,这个策略把各种自媒体挡在了外面。

    如果允许 ai 内容,用不了多久,就会被 ai 内容淹没的,毕竟 ai+bot 比人要快很多,10 分钟生成几百篇文章和回答不是问题。
    Alias2023
        42
    Alias2023  
       348 天前
    mtu 什么的看看
    xqzr
        43
    xqzr  
       345 天前   1
    @Livid #31 AI
    Livid
        44
    Livid  
    MOD
    PRO
       345 天前
    @xqzr 谢谢,31 楼的账号已经被彻底 ban 。

    这也是一个例子:有的人就是看不到。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2581 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 04:53 PVG 12:53 LAX 21:53 JFK 00:53
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86