이전 서버에서 데이터를 이동해야 하는 경우가 있습니다.호스트1새 서버로:호스트2. 문제는 호스트1이 호스트2를 볼 수 없다는 것입니다.하지만 다른 서버를 사용할 수 있습니다(로컬호스트)를 SSH로 호스트1과 호스트2 모두에 연결합니다.
다음과 같이 작동한다고 상상해 보세요.호스트1 -> 로컬호스트 -> 호스트2
rsync를 사용하여 호스트1과 호스트2 간에 파일을 복사하려면 어떻게 해야 합니까? localhost 서버에서 이 명령을 시도했지만 다음과 같이 표시됩니다.소스와 대상이 모두 원격일 수는 없습니다.
rsync -avz host1:/workspace host2:/rasv1/old_code-de
답변1
답변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
.