Scp

-C 標誌在scp 中究竟做了什麼?

  • September 5, 2018

我總是使用rsyncscp為了從/向遠端機器複製文件。最近,我在scp( man scp) 的手冊中發現了標誌-C

-C      Compression enable.  Passes the -C flag to
        ssh(1) to enable compression.

在我發現這個標誌之前,我曾經使用過zipbefore 和 then scp

僅使用-C壓縮和解壓縮是否有效?什麼時候使用一個或另一個過程可以加快傳輸速度?

它永遠不會真正產生任何重大影響,但是在復製文件之前壓縮文件的效率應該會低一些,因為使用諸如zip可以封裝多個文件(如tar)的容器格式是不必要的,並且不可能流式傳輸 zip輸入和輸出(所以你需要一個臨時文件)。

gzip另一方面,使用,而不是zip應該完全相同,因為它是ssh -C在引擎蓋下所做的……除了 gzip 壓縮自己比使用ssh -C.

-C標誌啟用 SSH 流的 gzip 壓縮。

它相當於Accept-Encoding: gzipHTTP 中的。

標誌的執行方式取決於您傳輸的一種數據:

  • 傳輸單個大文件時,性能與傳輸前壓縮文件幾乎相同(忽略 zip 與 gzip 算法的效率)。

但是-C對於作為使用者的您來說,使用起來會更省力。

  • 傳輸大量小文件時,性能會不如傳輸前壓縮文件。

其背後的一個原因是,在每次文件傳輸之前,SCP 伺服器和客戶端之間都會進行互動通信(用於交換文件元數據,例如時間戳和權限)。所以雙方都必須等待對方回應(等待時壓縮無濟於事)。對於每個傳輸的文件,這都是浪費時間。浪費多少時間取決於連接的延遲。最後,傳輸速度可能會慢很多。

當您傳輸單個壓縮文件時,該通信僅發生一次。

引用自:https://unix.stackexchange.com/questions/218668