동일한 네트워크에 있지 않은 두 서버 간의 scp

동일한 네트워크에 있지 않은 두 서버 간의 scp

2개의 서로 다른 VPN 연결을 통해 두 서버에 모두 액세스할 수 있습니다. 내 컴퓨터에서 두 VPN이 동시에 작동하도록 관리했습니다(일부 라우팅 규칙).

scp <remote1>:some/file <remote2>:destination/folder내 노트북 ​​단말기에서 하나 만들고 싶습니다 . 하지만 이것을 시도하면 scp다음 명령이 호출됩니다 .원격 1찾을 수 없음원격 2같은 네트워크에 있지 않기 때문입니다. scp내 노트북을 라우터로 사용하여 명령을 강제할 수 있나요 ?

노틸러스(서버, 두 서버 모두에 연결한 다음 복사하여 붙여넣기)를 사용해 보면 작동하지만 터미널에서 이 작업을 수행하고 싶습니다.

답변1

최신 버전의 scp에는 -3 옵션이 있습니다.

-삼

Copies between two remote hosts are transferred through the local host. Without this option the data is copied directly between the two remote hosts

답변2

scp -3평소 보다 더 많은 유연성이 필요하다면 ssh파이프 방식이 흥미로울 수 있습니다.

이는 로컬 시스템에서 스트림을 리디렉션하는 것과 동일합니다.

ssh sourceRemote 'cat /path/to/sourceFile' \
| ssh destinationRemote 'cat > /path/to/destinationFile'

그런 다음 여러 중간 컴퓨터를 연결하거나 라우팅하는 동안 전송된 파일의 로컬 복사본을 저장하는 등 언제든지 더 많은 스트림 리디렉션을 추가할 수 있습니다.

답변3

@Anko의 답변을 확장하면 tar여러 파일에 사용할 수 있습니다.

ssh -q user@sourcehost 'cd /source/path; tar -czf - files...' | \
ssh -q user@desthost 'cd /dest/path; tar -xzf -'

압축은 전적으로 선택 사항입니다. 데이터가 압축하기 어렵거나 오버헤드를 감당할 만큼 크지 않을 수 있습니다. 귀하의 버전이 tar이 스위치를 지원하지 않는 경우 -z파이프 gzip -cgzip -dc.

추신: tar이 버전은 추출 시 선행 슬래시를 제거하지 않습니다(즉, 절대 경로 이름(제공된 경우) 작성).

편집: -e none의사 터미널이 할당되지 않았기 때문에 파이프가 필요하지 않습니다.

관련 정보