`scp`는`rsync`와 어떻게 다릅니 까?


241

Ghost 블로깅 설정 에 관한 기사에 따르면 scp내 로컬 시스템에서 원격 서버로 복사하는 데 사용 됩니다.

scp -r ghost-0.3 root@*your-server-ip*:~/

그러나 Railscast 339 : Chef Solo Basicsscp반대 방향 (원격 서버에서 로컬 컴퓨터로)으로 복사하는 데 사용 합니다.

scp -r root@178.xxx.xxx.xxx:/var/chef .

동일한 Railscast에서 저자는 파일을 원격 서버에 복사하려고 할 때 (첫 번째 예와 같은 방향으로) 다음을 사용합니다 rsync.

rsync -r . root@178.xxx.xxx.xxx:/var/chef

양방향으로 복사 할 rsync경우 명령을 사용하는 이유는 무엇 scp입니까? scp와는 어떻게 다릅니 rsync까?


더 단순하고 항상 암호화되는 것 외에는 scp가 "rsync -aA"보다 더 잘 할 수있는 것을 지적한 사람은 없습니다. "rsync -aAX --delete source dest"를 선호합니다. 양방향 동기화를위한 체크 아웃 bsync
Tomachi

답변:


345

이러한 도구의 주요 차이점은 파일을 복사하는 방법입니다.

scp기본적으로 소스 파일을 읽고 대상에 씁니다. 로컬 또는 네트워크를 통해 일반 선형 복사를 수행합니다.

rsync또한 로컬 또는 네트워크를 통해 파일을 복사합니다. 그러나 특수 델타 전송 알고리즘 과 몇 가지 최적화를 사용하여 작업을 훨씬 빠르게 수행합니다. 전화를 고려하십시오.

rsync A host:B
  • rsyncAB 의 파일 크기와 수정 타임 스탬프를 확인하고 일치하는 경우 추가 처리를 건너 뜁니다.

  • 대상 파일 B가 이미 존재하는 경우 델타 전송 알고리즘은 AB의 차이 만 유선으로 전송합니다.

  • rsync임시 파일에 데이터를 쓸 것입니다 T , 다음 대상 파일 교체 B를 함께 T 사용하고있는 프로세스 업데이트보기 "원자"하기 위해 B를 .

그들 사이의 또 다른 차이점은 호출에 관한 것입니다. rsync다양한 명령 행 옵션이있어 사용자가 동작을 미세 조정할 수 있습니다. 복잡한 필터 규칙을 지원하고 배치 모드로 실행하고 데몬 모드 등에 scp는 스위치가 거의 없습니다.

요약하면 scp일상적인 작업에 사용하십시오. 대화식 쉘에서 가끔 입력하는 명령. 사용하기가 더 쉬우 며 이러한 경우 rsync최적화가 도움이되지 않습니다.

작업과 같은 반복 cron작업에는을 사용하십시오 rsync. 언급했듯이 여러 번 호출하면 이미 전송 된 데이터를 활용하여 매우 빠르게 수행하고 자원을 절약합니다. 네트워크를 통해 두 디렉토리를 동기화하는 훌륭한 도구입니다.

또한 큰 파일을 다룰 때는 옵션 rsync과 함께 사용 하십시오 -P. 전송이 중단 된 경우 명령을 다시 발행하여 중지 된 위치에서 다시 시작할 수 있습니다. Sid Kshatriya의 답변을 참조하십시오 .


14
일상적인 작업에 scp를 사용한다고 말합니다. 설명과 OP에서 옵션없이 사용했을 때 두 도구의 인터페이스가 동일한 것으로 보입니다. rsync가 우수한 구현을 가지고 있고 인터페이스가 동일하다면 왜 항상 rsync를 사용하지 않습니까?
Alex

5
옵션이 없어도 인터페이스가 동일하지 않습니다. Rsync는 소스 인수에 슬래시를 특수하게 해석합니다 (디렉토리 자체와 내용을 동기화). 다른 문제가있을 수도 있지만 확실하지 않습니다.
Rafa

2
또한 scp유닉스 계열 시스템에서 사용할 수 있다고 생각 하므로 성가신 "명령을 찾을 수 없음"을 방지 할 수 있습니다.
Rafa

2
@ erikb85 rsync에는 -P 플래그가있어 진행 표시 줄을 표시하고 부분적으로 완료된 전송에서 재개 할 수 있습니다. digitalocean.com/community/tutorials/…
Ben

1
사이 또 다른 인터페이스 차이 scprsync: rsync -a비교는 scp -rp수정 시간 및 사용 권한을 유지합니다.
Rafa

71

rysnc는 느리고 신뢰할 수없는 연결에서 실행하는 데 유용 할 수 있습니다. 따라서 큰 파일 중간에 다운로드가 중단되면 rysnc는 다시 호출했을 때 중단되었던 지점부터 계속할 수 있습니다.

사용하다 rsync -vP username@host:/path/to/file .

-P 옵션은 부분적으로 다운로드 된 파일을 유지하고 진행률을 보여줍니다.

평소대로 확인 man rsync


32

다른 매개 변수의 차이 흑백 scp 및 rsync

1. 대기 시간에 따른 성능

  • scp : scp는 상대적으로 덜 최적화되고 속도가 빠릅니다.

  • rsync : rsync는 비교적 최적화되고 속도가 빠릅니다.

https://www.disk91.com/2014/technology/networks/compare-performance-of-different-file-transfer-protocol-over-latency/

2. 방해 취급

  • scp : scp 명령 줄 도구가 손실 된 네트워크 연결에서 중단 된 다운로드를 재개 할 수 없음

  • rsync: 위의 rsync 세션 자체가 중단되면 동일한 명령을 입력하여 원하는만큼 세션을 재개 할 수 있습니다. rsync는 중단 된 위치에서 전송을 자동으로 다시 시작합니다.

http://ask.xmodulo.com/resume-large-scp-file-transfer-linux.html

3. 명령 예

scp

$ scp source_file_path destination_file_path

rsync

$ cd /path/to/directory/of/partially_downloaded_file
$ rsync -P --rsh=ssh userid@remotehost.com:bigdata.tgz ./bigdata.tgz 

-P옵션은 --partial --progressrsync와 부분적으로 다운로드 된 파일을 사용할 수 있도록 하는 것과 같습니다 . 이 --rsh=ssh옵션은 rsync에게 ssh를 원격 쉘로 사용하도록 지시합니다.

4. 보안 :

scp가 더 안전합니다. rsync --rsh=sshscp만큼 안전하게 만들기 위해 사용해야 합니다.

더 알고 싶은 사람 문서 :

성능 차트


이 새로운 답변, 특히 보안 부분에 감사드립니다.
zhihong

많은 시스템에서 ssh가 기본적으로 사용됩니다. serverfault.com/questions/378939/do-you-need-e-ssh-for-rsync
qwr

2
openSSH 8.0 릴리스 정보의 보안 정보 : The scp protocol is outdated, inflexible and not readily fixed. We recommend the use of more modern protocols like sftp and rsync for file transfer instead.
downtheroad

6

rsyncover의 주요 특징 중 하나는 scp(ssh와 함께 사용되는 경우 델타 알고리즘 및 암호화 외에) 전송 된 파일이 올바르게 전송되었는지 자동으로 확인 한다는 것입니다. Scp는이를 수행하지 않으므로 더 큰 파일을 전송할 때 때때로 손상 될 수 있습니다. 따라서 일반적으로 rsync는 보장 된 복사본입니다 .

Centos 맨 페이지에서는 --checksum옵션 설명 이 끝났다고 언급했습니다 .

rsync는 파일이 전송 될 때 생성되는 전체 파일 체크섬을 확인하여 전송 된 각 파일이 수신 측에서 올바르게 재구성되었는지 항상 확인하지만 전송 후 자동 확인은이 옵션의 이전과는 아무런 관련이 없습니다. 전송 "이 파일을 업데이트해야합니까?" 검사.


5

나에게 구별있다 scp동안 항상 SSH (보안 셸)와 암호화는 rsync반드시 암호화되지 않습니다. 보다 구체적으로, rsync자체적으로 암호화를 수행하지 않습니다. 암호화를 수행하기 위해 여전히 다른 메커니즘 (예 : ssh)을 사용할 수 있습니다.

보안 외에도 암호화는 CPU 오버 헤드뿐만 아니라 전송 속도에도 큰 영향을 미칩니다. (내 경험은 rsync보다 훨씬 빠를 수 있습니다 scp.)

암호화가 켜져있는 경우이 게시물 을 확인하십시오 rsync.


1

scp하나의 파일에 가장 적합 합니다.
또는tar 리소스가 적은 소스 코드 트리 ( : 이미지, sqlite ) 와 같은 소규모 데이터 세트에 대한 압축 및 조합 .


그러나 더 많은 양을 다루기 시작할 때 다음과 같이 말합니다.

  • 미디어 폴더 (40GB)
  • 데이터베이스 백업 (28GB)
  • mp3 라이브러리 (100GB)

그것은 구축 비실용적 우편 /의 tar.gz 로 전송하는 파일 scp를 받는 수행을이 시점에서를 물리적 호스팅 서버의 한계.

연습으로 파이프 를 연결 하고 결과를 원격 파일 로 리디렉션하는 것과 같은 일부 체조를 수행 할 수 있습니다 . (스왑 또는 임시 클론 ( 일명 zip 또는 tar.gz) 을 구축 할 필요가 없음 )tarssh

그러나 ,

rsync 간단 하게이 프로세스를 수행하면 추가 디스크 공간을 소비하지 않고도 데이터 를 전송할 수 있습니다 .

또한 ,

연속 (크론?) 업데이트는 최소한의 변경을 사용하고 전체 복제 된 복사본은 시간이 지남에 따라 큰 데이터 마이그레이션 속도를 높입니다.

tl; dr
scp == 소규모 (동일한 드라이브에 압축 파일을 구축 할 공간이 있음)
rsync== 대규모 (큰 데이터를 백업 할 필요가 있고 공간이 남아 있지 않음)


-1

실제 상황에서 생각하는 것이 좋습니다. 우리 팀에서는 rsync -aP클러스터의 잘못된 cassandra 호스트를 교체하는 데 사용 합니다. 우리는 scp (느리게 진행하지 않고 진행 보존) 로이 작업을 수행 할 수 없습니다.


실제로 다른 답변에 언급되지 않은 것은 가져 오지 않습니다. 또한 주제 외의 질문에도 대답하지 않아야합니다.
Dan Cornilescu

1
@ DanCornilescu 이것은 실제 시나리오에서 유스 케이스를 설명하므로 다른 사람들이 차이점을 쉽게 이해할 수 있습니다. 다른 비슷한 답변이 없습니다
del bao

2
Sid 및 Rafa의 답변에서 -P 설명 및 속도 저하 / 속도 관련 메모를 참조하십시오.
Dan Cornilescu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.