SSH 세션을 재사용하여 반복되는 rsync 명령 실행

SSH 세션을 재사용하여 반복되는 rsync 명령 실행

중복 가능성:
설정된 SSH 채널 사용

SSH 프록시 체인을 통해 액세스할 수 있는 원격 서버가 있습니다. 결과 채널은 충분히 넓고 빠르지만 설정하는 데 몇 초가 걸립니다.

rsync나는 이 서버를 주기적으로 실행하여 상대적으로 큰 파일 트리에 대한 작은 변경 사항을 동기화하고 싶습니다 .

단순히 이 작업을 수행하면 rsync -r source_dir remote_host:target_dir연결을 만드는 데 대부분의 시간이 소요됩니다. 이에 비해 이 호스트에 대한 대화형 연결을 설정하는 데는 거의 같은 시간이 걸립니다.

rsync연결 지연을 피하기 위해 여러 호출에서 SSH 연결을 재사용하는 방법이 있습니까 ?

문제는 내가 원하지 않는다는 거야계속해서파일을 원격 호스트에 복사합니다. 복사하는 동안 파일 트리가 일관되게 유지되어야 하므로 rsync 이벤트를 직접 트리거하고 싶습니다.

git예를 들어 지속적인 재연결 지연을 피하고 원격 호스트에서 수신 대기 포트를 열 필요가 없는 한 다른 것을 기꺼이 사용할 것입니다 .

답변1

예, 옵션을 참조 ControlMaster하세요 ControlPath.

다음을 사용하여 기본 연결을 시작할 수 있습니다.

mkdir ~/.ssh/ctl
ssh -nNf -o ControlMaster=yes -o ControlPath="$HOME/.ssh/ctl/%L-%r@%h:%p" user@host

그런 다음 rsync를 사용하십시오.

rsync -e "ssh -o 'ControlPath=$HOME/.ssh/ctl/%L-%r@%h:%p'" ...

그 다음에

ssh -O exit -o ControlPath="$HOME/.ssh/ctl/%L-%r@%h:%p" user@host

기본 연결을 종료합니다.

(그런데 일부 우분투 버전에는 성가신 문제가 있습니다.특징/etc/motd로그인할 때마다(비대화형 SSH 세션 포함) 재구축 되기 때문에 업데이트가 사용 가능한지 확인하는 작업이 포함된 경우 시간이 오래 걸릴 수 있습니다. IIRC, pam_motdpam 구성에서 제거하여 비활성화할 수 있습니다)

관련 정보