`-C` 플래그는`scp`에서 정확히 무엇을합니까?


34

항상 rsync또는 scp원격 컴퓨터에서 파일을 복사하기 위해 또는 하나를 사용합니다 . 최근에 나는 깃발 scp( man scp)의 매뉴얼에서 발견했다.-C

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

이 플래그를 발견하기 zip전에 이전과 다음에 사용했습니다 scp.

-C압축 및 압축 풀기를 사용하는 것만 큼 효율적 입니까? 하나 이상의 프로세스를 사용하면 전송 속도가 더 빨라 집니까?


2
내가 생각하는 가장 좋은 방법은 당신 자신의 벤치 마크입니다. 처리량 사용 scp -rvscp -Crv비교
cuonglm

3
이것은 질문과는 전혀 관련이 없지만 zip매우 "windows"-ish 파일 형식입니다. 네이티브 리눅스 소프트웨어로 리눅스 머신을 운영 할 때는 거의 보지 않아도됩니다. tar반면, 권한 및 이름 등을 유지하면서 하나 개의 파일에 디렉토리를 압연에 사용되는 gzip, bzip2, xz, 등이 압축 파일에 사용됩니다. tars는 종종 리눅스에서 아카이브를위한 압축, 제작 tar.gztar.xz일반적인 형식입니다. 나는 사람들이 scp와 같은 명령으로 자신의 일을 좋아 하는 것을 보았습니다 tar cvz directory | ssh machine 'cd somewhere; tar xz'.
Score_Under

2
@Score_Under-zip 형식은 Java에서도 .jar 파일을 패키지화하는 데 사용되므로 zip은 여전히 ​​많은 Linux 서버에서 광범위하게 사용됩니다.
Johnny

각 파일 전송에서 옵션을 사용하는 대신 파일을 넣을 Compression yes.ssh/config있습니다.
Barmar

정말로 속도를 원한다면 SSH를 피할 수 있습니다 : unix.stackexchange.com/questions/227951/…
rogerdpack

답변:


21

실제로 큰 차이를 만들지는 않지만 복사하기 전에 파일을 압축하면 zip여러 파일을 캡슐화 할 수 있는 컨테이너 형식 (예 :) tar이 불필요하고 압축을 스트리밍 할 수 없기 때문에 조금 덜 효율적이어야합니다 입력 및 출력 (따라서 임시 파일이 필요함).

사용 gzip대신에, 다른 한편으로는 zip그것이 무엇 때문에 정확하게 일치한다고 ssh -C만 사용하는 것보다 그 자신이다 Gzip으로 압축 더 많은 작업을 제외하고 ... 후드 않습니다 ssh -C.


좋아, 내가 무엇인지 확인하겠습니다 gzip. 당신의 대답은 그것이 scp -rC내가 가지고있는 가장 효율적인 해결책 이라는 것을 의미합니까 ?
Remi.b

1
귀하의 답변은 -C대화 형 프로토콜 스트림 을 압축 한다고 생각하지 않습니다 . 데이터 만 고려하십시오. 따라서 당신의 결론은 잘못되었습니다. 내 답변
Martin Prikryl

멤버 디렉토리가 끝에 위치하므로 @Celada Zip은 파이프 라인에 쓸 수 있습니다. 그러나 말했듯이 압축을 풀려면 둘 이상의 멤버를 추출해야하므로 파이프 라인에서 읽을 수 없습니다.
jrw32982는 Monica

19

-C플래그는 SSH 스트림의 GZIP 압축을 가능하게한다.

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

플래그의 수행 방식은 전송하는 데이터 종류에 따라 다릅니다.

  • 하나의 큰 파일을 전송할 때 성능은 전송 전에 파일을 압축하는 것과 거의 같습니다 (zip과 gzip 알고리즘의 효율성을 무시 함).

    그러나 -C사용자로서의 노력은 덜 노력합니다.

  • 작은 파일을 많이 전송할 때 전송하기 전에 파일을 압축하는 것보다 성능이 떨어집니다.

    그 이유는 각 파일을 전송하기 전에 SCP 서버와 클라이언트간에 대화 형 통신이 있기 때문입니다 (타임 스탬프 및 권한과 같은 파일 메타 데이터 교환을 위해). 따라서 양쪽이 상대방이 응답 할 때까지 조금 기다려야합니다 (대기 중에는 압축이 도움이되지 않습니다). 전송 된 파일마다 낭비되는 시간입니다. 낭비되는 시간은 연결 대기 시간에 따라 다릅니다. 결국, 전송 속도가 느려질 수 있습니다.

    단일 압축 파일을 전송하면 해당 통신은 한 번만 발생합니다.


8

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

느린 연결이 압축 속도가 느려질 것을 매우 가능성이 합리적으로 빠른 연결에 (100Mbit의 이상), 일을 속도가 향상됩니다.

gzip (특히 gzip -6)이 선택한 zip 압축 수준보다 더 효율적인지 또는 zip인지에 따라 zip보다 능률적입니다.


1
필자의 경우에는 비교적 좋은 연결 상태 (캠퍼스에 있음)가 있지만 복사해야하는 폴더는 매우 큽니다 (442 .bin.txt파일 보다 100GB ~ ​​100GB ). 그래서 그냥 사용을 제안하지 않을 것이다 scp -r없이 -C플래그와 더 zip, gzip아니 tar?
Remi.b

2
@ Remi.b : 아마 두 가지 방법으로 벤치마킹해야합니다. 문제는 CPU가 압축되지 않은 네트워크를 통해 전송 될 수있는 것보다 빠른 속도로 데이터를 압축 할 수있을 정도로 빠르지 않은지 여부입니다. 답은 특정 컴퓨터와 네트워크에 따라 다릅니다.
Nate Eldredge

좋아, 나는 포인트 +1을 얻었다. 도와 주셔서 감사합니다
Remi.b

SSH 자체는 내가 알아 차린 CPU를 사용하는 것으로 보이며 때로는 최대 대역폭보다 훨씬 낮습니다. 확실하지가 무엇을해야 하는지를 ...
rogerdpack

성능도 데이터에 따라 다릅니다. 본질적으로 모두 0 인 파일을 복사하면 압축률이 높아집니다. 두 원격 서버 사이에 500Mb 링크가 있으며 ~ 128-130MB / s (약 일부 scp 압축 ​​버퍼 제한)에서이 링크의 모든 0을 포함하는 50G 파일 (VMWare VMDK)을 6-7 분만에 복사했습니다. 압축이 없으면 1:45 시간이 걸렸습니다. 마일리지는 데이터의 복잡성과 압축률에 따라 다릅니다.
Topher
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.