2010-07-31 6 views
0

나는 scp가 행동하도록 납득시킬 수없는 것처럼 보입니다. 테스트 데이터 명령scp -r copy를 스크립팅하는 방법은 무엇입니까?

[email protected]:/tmp$ scp -r /tmp/a1 domU-12-31-38-00-E2-52.compute-1.internal:/tmp/a1 
발행에

[email protected]:/tmp$ find /tmp/a1/ 
/tmp/a1/ 
/tmp/a1/a2 
/tmp/a1/a2/a3 

를 들어

나는 domU에-12-31-38-00-E2-52.compute-에서 만든 같은 디렉토리 구조를 기대 1. 내부적으로/tmp/a1 디렉토리가 대상 호스트에 있는지 여부.

[email protected]:/tmp$ ssh domU-12-31-38-00-E2-52.compute-1.internal find /tmp/a1 
/tmp/a1 
/tmp/a1/a1 
/tmp/a1/a1/a2 
/tmp/a1/a1/a2/a3 

어떻게 SCP는 작업의 루트로 주어진 디렉토리에 복사하도록 강제 할 수 있습니다 (/ tmp를/A1은 대상 호스트에있는 경우) 대신에, 다음과 같은 구조는 무엇 scp를 실제로 만들어 무엇입니까?

나중에이 작업을 스크립트로 작성하여 마스터의 지정된 디렉토리 경로에서 동일한 디렉토리 구조를 모든 슬레이브에 복제하는 스크립트를 호출 할 수 있습니다. 이 방식으로 rsync 동작 (적어도 테스트 한 것)은 동일하다는 점에 유의하십시오.

고맙습니다. Maxim.

답변

2

scpcp의 동작을 모방합니다 (존재하는 경우). 대상 디렉토리에 복사됩니다. /tmp/a1 대신 /tmp에 복사하십시오. 대신 $ scp -r /tmp/a1 사용을 사용

+0

나는 모든 경우에 슬레이브 유틸리티에 대한 일반적인 복사로 작동한다고 생각하지 않습니다. 귀하의 제안에 따라 매개 변수의 절대 경로를 찾아 디렉터리인지 여부를 결정해야합니다. 그렇다면 scp 명령을 작성하기 전에 한 레벨을 제거하십시오. 좀 더 간단한 해결책이 "스크립트가 더 친숙한가?" –

+0

파일의 한 수준을 제거 할 수도 있습니다. 조건부 여야한다고 생각하지 않습니다. 'dirname'이 이것을 할 것입니다. 경로 끝의 슬래시에주의해야합니다. –

0

이 : 이 $ scp -r /tmp/a1/*/tmp를/A1에서 모든 파일을 복사합니다 , 그래서 당신의 목적지는 결과적인 구조가 될 것입니다/tmp를 다른/A1/A2/A3 또는 I "/ tmp/a1 /"이 아닌 단순히 "/ tmp /"로 대상 디렉토리를 만들 것을 제안합니다. 어느 방법이든 작동합니다. 그리고 rsync에 대해서도 마찬가지입니다. **this/** ~ rsync는 scp 또는 cp의 의미로 **this/**을 의미합니다. 뒤에 슬래시 [this/]은 폴더의 내용을 복사하는 것을 의미합니다. 후행 슬래시 으로두면 [재귀적일 경우] 디렉토리 자체가 복사됩니다.

당신이 유용하다고 생각하길 바랍니다. :) 매트

관련 문제