"scp"에서 "-C" 플래그의 역할은 정확히 무엇입니까?

"scp"에서 "-C" 플래그의 역할은 정확히 무엇입니까?

나는 항상 원격 컴퓨터에서 원격 컴퓨터로 파일을 복사 rsync하거나 사용합니다. 최근 매뉴얼에서 ( ) 플래그를 scp발견했습니다.scpman scp-C

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

zip이 플래그를 발견하기 전에는 before와 then을 사용했습니다 scp.

-C압축과 압축 풀기를 사용하는 것이 더 효율적입니까? 한 프로세스 또는 다른 프로세스를 사용하면 언제 전송이 더 빨라지나요?

답변1

-C플래그는 SSH 스트림의 gzip 압축을 활성화합니다.

이는 Accept-Encoding: gzipHTTP와 동일합니다.

이 플래그가 구현되는 방법은 전송하는 데이터 유형에 따라 다릅니다.

  • 하나의 대용량 파일을 전송할 때 성능은 전송하기 전에 파일을 압축하는 것과 거의 동일합니다(zip 및 gzip 알고리즘의 효율성 무시).

    그러나 -C사용자의 경우 사용하는 것이 더 노동력을 절약합니다.

  • 많은 수의 작은 파일을 전송할 때 전송하기 전에 파일을 압축하는 것보다 성능이 좋지 않습니다.

    그 이유는 각 파일을 전송하기 전에 SCP 서버와 클라이언트 간에 대화형 통신이 있기 때문입니다(타임스탬프 및 권한과 같은 파일 메타데이터 교환을 위해). 따라서 양측은 상대방으로부터 응답을 받기까지 잠시 기다려야 합니다(기다리는 동안 압축은 도움이 되지 않습니다). 이는 파일을 전송할 때마다 시간 낭비입니다. 낭비되는 시간은 연결 대기 시간에 따라 다릅니다. 궁극적으로 전송 속도는 훨씬 느려질 수 있습니다.

    이 통신은 단일 압축 파일을 전송할 때 한 번만 발생합니다.

답변2

실제로 큰 차이를 만들 수는 없지만 파일을 복사하기 전에 압축하면 Stream zip 입력 및 출력 zip과 같은 여러 파일을 캡슐화할 수tar

gzip반면에 대신을 사용하는 것은 내부적으로 수행하는 작업 zip과 정확히 동일해야 합니다 ... gzip 자체가 .ssh -Cssh -C

답변3

SSH(SCP 아래)에서 gzip 압축을 활성화합니다.

존재하다느린이렇게 하면 연결 속도가 빨라지고, 합리적으로 빠른 연결(100Mbit 이상)에서는 압축으로 인해 속도가 느려질 가능성이 높습니다.

gzip(특히 gzip -6)이 선택한 zip 압축 수준보다 효율적인지 여부에 따라 zip보다 효율성이 높거나 낮습니다.

관련 정보