명시적인 포트와 다른 사용자 이름을 사용하여 두 원격 장치 간에 파일을 재동기화하는 방법은 무엇입니까?

명시적인 포트와 다른 사용자 이름을 사용하여 두 원격 장치 간에 파일을 재동기화하는 방법은 무엇입니까?

두 원격 서버 간에 파일을 재동기화하고 싶습니다. @roaima의 다음 솔루션을 따르려고했습니다.https://unix.stackexchange.com/a/183516/137526하지만 다음 두 가지 이유 때문에 좀 더 섬세한 솔루션이 필요합니다.

  1. 원격 서버 중 하나에 ssh에 대한 기본 포트가 없으므로 -p 옵션을 사용하여 포트를 지정해야 합니다.
  2. 두 서버 모두에 SSH로 연결할 수 있지만 다른 사용자 이름을 사용해야 하므로 명시적으로 지정해야 합니다.

또한 인용된 솔루션에서는 소스 호스트의 경로와 대상 호스트의 경로가 모두 /var/www로 표시되므로 명확하지 않습니다.

다음 명령의 다른 변형을 시도했지만 성공하지 못했습니다.

ssh -R localhost:50000:username1@dest_host:22 username2@source_host 'rsync -e "ssh -p 50000" -avzt --progress --partial /path/on/source/ localhost:/path/on/destination/'

답변1

당신이 하고 있는 일은 적어도 '복잡하다'. 내가 아는 한, 한 서버에 연결하고 다른 서버와 동기화하도록 지시합니다.

사용 편의성을 위해 특정 호스트에 대한 로컬 SSH 구성에 사용할 포트와 사용자를 지정할 수 있습니다. 예를 들어, source_host의 ~/.ssh/config(/home/username2/.ssh/config) 파일에 다음 줄을 추가하는 경우:

machine dest_host
 user username1
 port 50000

다음을 사용하여 source_host에서 dest_host로 파일을 재동기화할 수 있습니다.

ssh username2@source_host 'rsync -e ssh /source/path/on/source_host dest_host:path_below_username1_home

가정하면, dest_host의 sshd는 포트 50000에서 수신 대기합니다. rsync의 "-r" / "-u" 옵션을 살펴볼 수도 있습니다.

답변2

내가 찾은 우아한 솔루션은 scp.

scp -3 -Cp [email protected]:/path/file*.txt [email protected]:/path/

완벽하게 작동합니다. 두 호스트에 대해 두 개의 서로 다른 사용자 이름을 사용합니다. 와 같이 파일 이름에 와일드카드를 사용할 수도 있습니다 *.

관련 정보