두 개의 원격 SSH 서버간에 파일 전송


21

두 SSH / SFTP 서버간에 파일을 쉽게 전송할 수 있습니까? 완벽한 솔루션은 FileZilla이지만 로컬과 원격 간의 연결 만 만들 수 있지만 원격과 원격 간의 연결은 만들 수 없습니다.

이론적으로 나는 두 노틸러스 창을 열고 일부에 연결할 수 ssh://server1/path/to/folderssh://server2/path/to/folder다음 바로 다른 측면에 하나의 파일을 당깁니다. 내 경험은 이것이 매우 불안정하다는 것입니다. 크기가 10MB 인 파일을 전송해도 문제는 없지만 10GB를 전송하면 노틸러스가 종종 끊어지고 ps -e | grep nautilus-> 가 필요합니다 kill -9 <pid>. 또한 Nemo와 Caja에서도 같은 것을 테스트했습니다. Nemo는 다른 두 가지보다 더 안정적인 경향이 있지만 여전히 완벽하지는 않으며 때때로 끊어집니다. FileZilla는 매우 안정적이며 실제로 중단되지는 않지만 단일 SSH 서버에만 연결할 수 있다는 언급 때문에 매우 유연하지 않습니다.

물론으로 폴더를 마운트 할 수도 sshfs있지만 이는 불편한 해결책입니다. 간단한 전송을 실행하기 위해 수행해야 할 작업이 너무 많습니다.

두 SSH 서버 간의 전송을 중단하지 않고 처리 할 수있는 앱이 있습니까? 완벽은 FileZilla와 같으며 연결이 중단되면 작업을 다시 선택합니다.


이 사이트는 소프트웨어 권장 사이트가 아니기 때문에 답변이 아니지만 수년간 (상업용) Beyond Compare ( scootersoftware.com )를 사용해 왔으며 이러한 종류의 작업에 아주 좋습니다. 로컬 경로 또는 sftp : // URL을 표시 할 수있는 두 개의 창을 제공하며 폴더 간의 차이점을 보여줍니다. 차이를 복사하는 기능은 중단되는 경우 우수한 이력서 메커니즘을 만들어냅니다. 매우 드물게 발생합니다. 내 경험에. (고객 만족을 제외하고는 그들과 함께하지 않습니다).
Guntram Blohm은 Monica

답변:


36

여전히 지원되는 Ubuntu 버전을 사용하는 경우 scp명령은 localhost 를 통해 remote1 에서 remote2로-3 파일을 복사 할 수있는 스위치를 제공합니다 .

me@local:~> scp -3 user1@remote1:/path/to/file1 user2@remote2:/path/to/file2

-3스위치를 생략 할 수도 있지만 다음 파일 에 있는 공개 키 ( id_rsa.pub) 가 필요합니다 .user1@remote1authorized_keysuser2@remote2

me@local:~> scp user1@remote1:/path/to/file1 user2@remote2:/path/to/file2

scp그런 다음 후드 아래에서 ssh user1@remote1첫 번째 작업을 수행합니다 scp /path/to/file1 user2@remote2:/path/to/file2. 따라서 자격 증명을 -3솔루션 과 다르게 배포해야합니다 .

다른 말로:

  • scp -3 remote1:file1 remote2:file2파일을 remote1 에서 localhost 로 전송 한 다음 remote2 로 다시 전송합니다 . 데이터는 remote1 → localhost → remote2로 이동합니다 . 로컬 호스트는 따라서이 시나리오에서 제 3 자입니다 -3. 이 작업을 수행하려면, 당신은에서 자격 증명이 필요합니다 로컬 호스트를 모두 REMOTE1REMOTE2 때문에 로컬 호스트 둘 다에 연결합니다.

  • scp remote1:file1 remote2:file2서로 연결된 속도로 파일을 remote1 에서 remote2 로 직접 복사합니다 . localhost 는 여기에 포함되지 않습니다 (명령 발행 외에). 데이터는 remote1 → remote2로 이동합니다 . 이 작업을 수행하려면, 당신은에서 자격 증명을해야합니다 로컬 호스트 에서만 REMOTE1 하지만 또한 당신의 자격 증명이 필요 REMOTE1을REMOTE2 때문에 로컬 호스트 커넥트가 REMOTE1 만 다음 REMOTE1 에 연결을 REMOTE2 .

가능하면 두 번째 방법을 선택합니다. 일부 의견에서 이미 언급했듯이 일반적으로 remote1remote2 사이의 네트워크 케이블은 그들과 localhost 사이의 케이블보다 훨씬 두껍습니다 .


2
정말 아름답습니다. ssh는 소프트웨어의 스위스 군용 칼입니다. 고마워, 나는 무언가를 배웠다.
유기 대리석

4
질문에 설명 된 노틸러스 방식과 같은이 방식은 파일을 먼저 로컬 시스템으로 전송 한 다음 두 번째 서버로 전송합니다. 이로 인해 두 원격 서버가 로컬 시스템보다 더 빠른 링크를 가질 때 상당한 속도 저하가 발생합니다. (예를 들어, 원격 서버가 데이터 센터에 있고 로컬 시스템에 DSL 연결이있는 경우)
Stobor

1
@ 스토 버 좋은 지적, 감사합니다. 나는 데이터의 유무에 관계없이 데이터가 어떻게 움직이는 지 명확히하기 위해 대답을 업데이트했습니다 -3.
PerlDuck

1
remote1에서 키나 비밀번호를 사용하지 않고 에이전트 전달에서 두 번째 방법이 작동합니까?
Eric Duminil

1
@EricDuminil 나는 말할 수 없다. 에이전트 전달에 대한 실제 경험이 없습니다. 그러나 키나 암호가 제공되지 않으면 remote1이 액세스를 거부해야하기 때문에 의심 스럽습니까?
PerlDuck

10

대부분의 경우 두 개의 ssh 서버가 서로 연결될 수 있으며 (또는 적어도 하나는 다른 서버에 도달 할 수 있음), 대부분의 경우 워크 스테이션의 인터넷이 서버 중 하나보다 훨씬 나쁩니다.

그렇다면 한 서버에서 다른 서버로 전송하도록 주문하는 것이 좋습니다.

ssh server1 nohup scp somefile server2:somefile

nohup.outserver1에서 오류를 점검하십시오 .

서버 연결 가능성이 다른 경우 마스터 인 시스템을 되돌릴 수 있습니다.

ssh server2 nohup scp server1:somefile somefile

7

아마도 여러 GUI 프론트 엔드 중 하나를 사용하여 rsync 할 수 있습니다.

rsync 명령에 대한 GUI 응용 프로그램이 있습니까?

또는 명령 줄에서 rsync를 직접 사용하여 두 원격 서버에 연결할 수도 있습니다.

"두 리모컨 사이에서 파일을 재 동기화하는 방법"

나는 종종 ssh로 한 서버에 로그인 한 다음 서버의 명령 줄에서 rsync를 사용하여 파일을 다른 원격 서버로 푸시하거나 가져옵니다. 일반적으로 일부 컴퓨터를 통해 파일을 전송하는 것보다 훨씬 빠릅니다.

rsync는 약간의 작업을 수행하기에 충분히 영리한데, 문제가 발생하여 프로세스를 중단하면 나중에 중단 된 지점에서 다시 시작할 수 있습니다.


0

SCP 프로토콜을 사용해야합니다. scp file you want to transfer login@address_of_second_server:/path_where_you_want_to_save


2
OP는 로컬 컴퓨터가 아닌 원격 컴퓨터로 두 원격 컴퓨터간에 파일을 복사하려고합니다. 또한 GUI 솔루션을 찾고있는 것 같습니다.
user68186

@ user68186 내 대답은 유효합니다.
Gravemind
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.