중복 가능성:
설정된 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_motd
pam 구성에서 제거하여 비활성화할 수 있습니다)