두 원격 서버 간에 파일을 동기화하고 싶습니다. @roaima의 다음 솔루션을 시도해 보았습니다.https://unix.stackexchange.com/a/183516/137526하지만 다음 두 가지 이유로 좀 더 미묘한 솔루션이 필요합니다.
- 원격 서버 중 하나에 SSH용 기본 포트가 아닌 포트가 있으므로 -p 옵션을 사용하여 포트를 지정해야 합니다.
- 두 서버 모두에 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/
완벽하게 작동합니다. 두 호스트는 두 개의 서로 다른 사용자 이름을 사용합니다. 와 같은 파일 이름에 와일드카드 문자를 사용할 수도 있습니다 *
.