2016-07-20 8 views
1

파이썬을 사용하여 한 원격 서버에서 다른 원격 서버로 파일을 복사하는 가장 좋은 방법을 알고 싶습니다.Python : 두 원격 서버간에 파일 복사

내 설정은 다음과 같은 :

+--------------+ 
| Server A |                    
+--------------+                 
| Build Server | 
+--------------+ 
     | 
     | 
+-------------+ 
| Server B | 
+-------------+ 
| Python Code | 
+-------------+ 
     | 
     | 
+------------+ 
| Server C | 
+------------+ 
| App Server | 
+------------+ 

나는이 몇 RPM의 빌드 서버에 저장됩니다. 이 바이너리를 App 서버에 전송해야이 상자에 설치할 수 있습니다.

현재 파이썬의 Paramiko 라이브러리 [sftp.get 및 sftp.put]을 사용하고 서버 A에서 서버 B로 바이너리를 가져 와서 서버 B에서 서버 C로 전송합니다. 어쨌든 코드를 구조화 할 수 있습니까? 바이너리를 서버 A에서 서버 C로 직접 전송할 수 있습니까?

더 정확히 말하면, 같은 것을 할 :

scp -3 [email protected]:/home/user1/file1.txt [email protected]:/home/user2/file1.txt 

이런 종류의 중간 홉을 방지 할 수 있습니다.

제안/개선 사항에 감사드립니다.

답변

1

이 문제를 해결하려면 rsync을 사용합니다. 당신은 직접 subprocess 모듈을 사용하여 파이썬에서 scp 전화를 걸거나 랩 또는 구현하는 기존의 파이썬 모듈을 시도 할 수있을 rsync

paramiko를 통해 필요한 모든 작업을 수행하는 것보다 서브 프로세스를 통해 scp를 호출하는 것이 훨씬 쉬울 것이다 .

+0

'scp'와 달리, rsync는 2 개의 원격 호스트간에 복사 할 수 없습니다. 'rsync' 명령을 실행하려면 원격 호스트 중 하나에'ssh '해야합니다. scop이나 rsync를 호출하기 위해'subprocess'를 사용하는 것이 파이썬 구현을 찾으려는 것보다 낫지 만 나는 동의한다. –

+0

이렇게하면 되겠습니까? ssh user1 @ remote1 'rsync -avz/path/to/source user2 @ remote2 :/path/to/dest'' –