Rem*_*i.b 53 scp compression file-transfer
我总是使用rsync或scp来从/向远程机器复制文件。最近,我在scp( man scp) 的手册中发现了标志-C
-C Compression enable. Passes the -C flag to
ssh(1) to enable compression.
Run Code Online (Sandbox Code Playgroud)
在我发现这个标志之前,我曾经zip在scp.
仅使用-C压缩和解压缩是否有效?何时使用一个或另一个进程使传输更快?
Cel*_*ada 35
它永远不会真正产生任何大的不同,但是在复制文件之前压缩文件的效率应该会降低一些,因为使用诸如zip可以封装多个文件(如tar)的容器格式是不必要的,并且不可能流式传输 zip输入和输出(所以你需要一个临时文件)。
使用gzip而不是在另一方面,zip应该是完全一样的,因为它就是ssh -C引擎盖下呢?除了gzip压缩自己更不是仅仅使用工作ssh -C。
Mar*_*ryl 35
该-C标志启用 SSH 流的 gzip 压缩。
它相当于Accept-Encoding: gzip在 HTTP 中。
标志的执行方式取决于您传输的数据类型:
传输单个大文件时,性能与传输前压缩文件几乎相同(忽略 zip 与 gzip 算法的效率)。
但是-C,作为用户,使用对您来说更省力。
传输大量小文件时,性能会不如传输前压缩文件。
其背后的原因是,在每次文件传输之前,SCP 服务器和客户端之间存在交互通信(用于交换文件元数据,如时间戳和权限)。所以双方都必须等待对方响应(压缩在等待时无济于事)。这对于每个传输的文件来说都是浪费时间。浪费多少时间取决于连接的延迟。最后,传输速度可能会慢很多。
当您传输单个压缩文件时,该通信仅发生一次。
小智 13
它启用 ssh 中的 gzip 压缩(在 scp 下)。
在慢速连接上,这会加快速度,在任何相当快的连接(100Mbit 或更快)上,压缩很可能会减慢速度。
根据 gzip(特别是 gzip -6)是否比您选择的 zip 压缩级别更高或更低,它比 zip 的效率更高或更低