2012-01-09 2 views
9

scp를 사용하여 파일 시스템의 다른 경로에있는 파일과 폴더를 복사하는 쉬운 방법을 알고 싶습니다. ssh 대상 서버가 암호를 요청하고 이것을 구성 파일에 넣을 수 없습니다. scp에는 스크립트에서 제공 할 수있는 암호 매개 변수가 없다는 것을 알기 때문에 매번 암호를 쓰면서 각 파일이나 디렉토리를 하나씩 복사해야합니다.다른 경로에서 여러 파일을 복사하는 현명한 방법 usinc scp

+0

[scp 또는 sftp의 단일 명령으로 여러 파일 복사 가능] 복제본 (http://stackoverflow.com/questions/16886179/scp-or-sftp-copy-multiple-files-with-single-command) – tripleee

답변

4

단일 glob 패턴을 사용하여 원격 시스템에서 복사하려는 파일의 모든 이름을 표현할 수있는 경우 단일 scp 명령으로이 작업을 수행 할 수 있습니다. 이 사용법은 모든 파일에 대해 로컬 시스템의 단일 대상 폴더 만 지원합니다. 예를 들면 :

scp 'RemoteHost:/tmp/[abc]*/*.tar.gz' . 

사본의 서브 디렉토리에있는 이름 (something).tar.gz하고 원격 시스템에서 모든 파일 이름이 a, b, 또는 c로 시작 /tmp. 작은 따옴표는 glob 패턴이 로컬 시스템의 쉘에서 해석되지 않도록 보호하는 것입니다.

단일 glob 패턴으로 복사하려는 모든 파일을 표현할 수 없지만 단일 명령 (그리고 패스 워드를 한 번만 요구하는 단일 SSH 연결)을 사용하여 복사를 계속하려면 다음 중 하나를 수행 할 수 있습니다

  • sftp 또는 rsync, 또는
  • 열고 원격 호스트에 SSH 마스터 연결처럼, scp 아닌 다른 명령을 사용하여 해당 마스터의 노예로 여러 SCP 명령을 실행합니다. 슬레이브는 마스터 연결을 피기 백 (piggyback)하게되며,이 연결은 처음부터 끝까지 열려 있으며 비밀번호를 묻지 않습니다. ssh 맨 페이지에서 마스터 & 슬레이브 연결을 읽으십시오.
4

공개 키를 서버 측에 복사합니다. 파일 ~/스푸핑/identity.pub 내부

ssh-keygen -t rsa 

추가] 콘텐츠 서버 측 사용자의 ~/스푸핑/authorized_keys2로 파일입니다. 암호를 더 이상 입력 할 필요가 없습니다.

그러나주의하십시오. "로컬 계정"에 액세스 할 수있는 사람은 암호없이 서버에 "ssh"할 수 있습니다. 이미 언급 한 글로브에 추가

+0

오 , 나는 OP가 SSH 키를 사용할 수없는 몇 가지 이유가 있다고 생각했습니다. 나는 잘못 읽었다. 그런 요구 사항이없는 것 같습니다. 열쇠는, 당신이 제안하는 것처럼, 내가 보통 사용하는 것입니다! – Celada

+0

나는이 방법을 알고 있었지만 .ssh와 같은 공통 디렉토리에 내 손을 얹고 싶지 않았습니다. –

11

:

당신은 하나의 문

예에서 대체 경로/pathparts을 정의 할 수 {,}을 사용할 수 있습니다 : 당신은 공개 키 인증을 사용할 수없는 경우, scp [email protected]:/{PATH1,PATH2} DESTINATION

+6

암호를 두 번 입력하지 않으려면 셸이 확장하지 않도록 중괄호를 인용하거나 이스케이프해야합니다. 예 : 'scp 'user @ host : {PATH1, PATH2}'DESTINATION' – yonran

+1

대상 경로는 어떻게됩니까? 'scp 'user @ host : {PATH1, PATH2}'DIRECTORY/{FILE1, FILE2}'와 같은 것을 가질 수있는 방법이 있습니까? – Ant

2

또는 SSH에 다음 구성을 추가 할 수 있습니다 (~/.ssh/config 또는 적절한 명령 줄 인수로 또는 적절한 명령 줄 인수로).

이 구성을 사용하면 SSH 연결이 2 분 동안 계속 열려 있으므로 처음으로 암호를 입력하기 만하면됩니다.

This post이 기능에 대해 자세히 설명합니다.