rsync를 사용하여 로컬 호스트 서버를 기반으로 하는 두 개의 원격 서버 간에 파일을 복사하는 방법은 무엇입니까?

rsync를 사용하여 로컬 호스트 서버를 기반으로 하는 두 개의 원격 서버 간에 파일을 복사하는 방법은 무엇입니까?

이전 서버에서 데이터를 이동해야 하는 경우가 있습니다.호스트1새 서버로:호스트2. 문제는 호스트1이 호스트2를 볼 수 없다는 것입니다.하지만 다른 서버를 사용할 수 있습니다(로컬호스트)를 SSH로 호스트1과 호스트2 모두에 연결합니다.

다음과 같이 작동한다고 상상해 보세요.호스트1 -> 로컬호스트 -> 호스트2

rsync를 사용하여 호스트1과 호스트2 간에 파일을 복사하려면 어떻게 해야 합니까? localhost 서버에서 이 명령을 시도했지만 다음과 같이 표시됩니다.소스와 대상이 모두 원격일 수는 없습니다.

 rsync -avz host1:/workspace host2:/rasv1/old_code-de

답변1

나는 해결책을 찾았습니다.https://unix.stackexchange.com/users/312074/eblock

~와 함께

scp -3 host1 host2

답변2

터널링을 사용하면 SSH를 통해 rsync를 리디렉션할 수 있습니다.

user@host1로 로그인을 시작하고 "localhost"를 통해 host2에 대한 터널을 만듭니다(혼동을 피하기 위해 "your_host"라고 부르겠습니다).

ssh <your_host_user>@<your_host> -L 8080:<host2_ip>:22

해당 터미널을 열어 둔 다음, host1의 다른 터미널에서 다음을 입력하세요.

rsync -avzh -e "ssh -p 8080" <source_file> <host2_user>@127.0.0.1:/<target_folder>

물론 8080 대신 다른 포트를 사용해도 됩니다. SSH를 사용하지 않는 다른 방법을 사용하는 경우에는 가능할 것 같지만 테스트하지는 않았습니다.

답변3

내가 아는 한 rsync는 원격 서버에서 원격 서버로의 복사를 지원하지 않습니다.

간단한 파일 복사만 필요한 경우 @eblock이 지적한 옵션 scp과 함께 사용할 수 있습니다.-3

 

rsync가 필요한 경우 두 서버를 모두 로컬 폴더에 마운트할 수 있습니다.sshfs

sshfs user@server1:/path/on/server1 /local/path1
sshfs user@server2:/path/on/server2 /local/path2

로컬 폴더 간에 파일을 복사하는 것보다:

rsync -av /local/path1 /local/path2

마운트 해제하려면:

fusermount -u /local/path1
fusermount -u /local/path2

의 속도/성능에 대해서는 잘 모르겠습니다 sshfs.

관련 정보