AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 697363
Accepted
pdp
pdp
Asked: 2015-06-09 04:14:19 +0800 CST2015-06-09 04:14:19 +0800 CST 2015-06-09 04:14:19 +0800 CST

为什么 scp 压缩比没有压缩慢?

  • 772

我需要将一个 20 GB KVM vdisk 文件(存储 CentOS 6.5 VM 的根文件系统)从一台实验室服务器传输到另一台。大文件大小以及我曾经将这样的 vdisk 文件压缩到几百兆字节的事实使我本能地启用了压缩,scp但我惊讶地发现传输速度相当低。然后我尝试与andbzip2结合并被吓了一跳。这是方法和平均吞吐量的摘要。sshcat

  • scp -C vm1-root.img [email protected]:/mnt/vdisks/, 11 MB/秒。
  • bzip2 -c vm1-root.img | ssh -l root 192.168.161.62 "bzip2 -d -c > /mnt/vdisks/vm1-root.img", 5 MB/秒。这个更低的结果促使人们在网上搜索。
  • scp -c arcfour -C vm1-root.img [email protected]:/mnt/vdisks/, 13 MB/秒。在关于 serverfault的一个答案-c arcfour中建议使用as。它几乎没有帮助。最后,我禁用了压缩。
  • scp vm1-root.img [email protected]:/mnt/vdisks/, 23 MB/秒。

压缩不应该更快吗?


在收到ssh(1)来自@sven 的手册页提示后,我尝试了几种不涉及压缩的文件传输替代方法,两者都取得了更好的结果。

  • cat vm1-root.img | ssh -l root 192.168.161.62 "cat > /mnt/vdisks/vm1-root.img", 26 MB/秒。

  • nc -l 5678 > /mnt/vdisks/vm1-root.img在接收器和nc 192.168.161.62 5678 < vm1-root.img发射器上,40 MB/s。该端口 5678是可用的任意端口。

使用nc原来是最快的复制方法!

过去,scp -C每当我认为它会时,它都工作得很好。例如,传输/var/log/messages*几 GB 大小的 syslog ( ) 时。几百 KB/s 的未压缩传输速率将增加到 1-2 MB/s。如手册页中所指出的,此示例确实适用于连接缓慢的情况。

我有一个案例,为 20 GB 分区新创建的虚拟磁盘映像的压缩大小仅为 200 MB。以大约 25 MB/s 的传输速率,我们可以在 8 秒内完成复制,而不是超过 13 分钟!显然,scp在这种情况下,没有压缩是低效的,scp -C甚至更糟。

我想,这里学到的主要教训是,scp -C应该被认为只是一种方便。如果一个文件可以显着压缩,那么最好先在源上压缩它,然后传输压缩形式,最后在目标上解压。快速进行压缩和解压缩的工具(例如pbzip2)将有更大的帮助。

ssh
  • 2 2 个回答
  • 12995 Views

2 个回答

  • Voted
  1. Best Answer
    Sven
    2015-06-09T04:20:10+08:002015-06-09T04:20:10+08:00

    引用man ssh(这是 所使用的基础scp):

    压缩在调制解调器线路和其他慢速连接上是可取的,但只会减慢快速网络上的速度。

    问题是压缩数据比通过网络发送数据需要更多时间。

    • 12
  2. Tony Butler
    2016-08-13T00:04:44+08:002016-08-13T00:04:44+08:00

    此外,除了压缩之外,nc 获得最佳速率,因为它也不加密。无损压缩依赖于查找数据的冗余部分,当在网络级别完成时,您最多可以查看 [buffer-size] 字节,而当首先处理整个文件时,它是 [file-size] 字节在其中寻找和处理重复的字节句子。

    此外,对于移动磁盘映像,您应该使用文件系统感知工具,例如 ntfsclone/partclone,因为即使是压缩也无法简单地跳过未分配的块 - 如果您不必传输任何数据,您的传输速率是无限的。也不要忘记销毁 Windows 分区上的交换和休眠文件,否则你正在复制垃圾,它只会扔掉并重新创建。

    • 1

相关问题

  • 如何最好地设置 ssh 隧道以访问远程网络 (Linux)

  • SSH 和重定向

  • 通过 SSH 会话使用 NET USER 命令拒绝访问

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve