scp를 사용하여 파일 시스템의 다른 경로에있는 파일과 폴더를 복사하는 쉬운 방법을 알고 싶습니다. ssh 대상 서버가 암호를 요청하고 이것을 구성 파일에 넣을 수 없습니다. scp에는 스크립트에서 제공 할 수있는 암호 매개 변수가 없다는 것을 알기 때문에 매번 암호를 쓰면서 각 파일이나 디렉토리를 하나씩 복사해야합니다.다른 경로에서 여러 파일을 복사하는 현명한 방법 usinc scp
답변
단일 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 맨 페이지에서 마스터 & 슬레이브 연결을 읽으십시오.
공개 키를 서버 측에 복사합니다. 파일 ~/스푸핑/identity.pub 내부
ssh-keygen -t rsa
추가] 콘텐츠 서버 측 사용자의 ~/스푸핑/authorized_keys2로 파일입니다. 암호를 더 이상 입력 할 필요가 없습니다.
그러나주의하십시오. "로컬 계정"에 액세스 할 수있는 사람은 암호없이 서버에 "ssh"할 수 있습니다. 이미 언급 한 글로브에 추가
오 , 나는 OP가 SSH 키를 사용할 수없는 몇 가지 이유가 있다고 생각했습니다. 나는 잘못 읽었다. 그런 요구 사항이없는 것 같습니다. 열쇠는, 당신이 제안하는 것처럼, 내가 보통 사용하는 것입니다! – Celada
나는이 방법을 알고 있었지만 .ssh와 같은 공통 디렉토리에 내 손을 얹고 싶지 않았습니다. –
:
당신은 하나의 문
예에서 대체 경로/pathparts을 정의 할 수 {,}
을 사용할 수 있습니다 : 당신은 공개 키 인증을 사용할 수없는 경우, scp [email protected]:/{PATH1,PATH2} DESTINATION
또는 SSH에 다음 구성을 추가 할 수 있습니다 (~/.ssh/config
또는 적절한 명령 줄 인수로 또는 적절한 명령 줄 인수로).
이 구성을 사용하면 SSH 연결이 2 분 동안 계속 열려 있으므로 처음으로 암호를 입력하기 만하면됩니다.
This post이 기능에 대해 자세히 설명합니다.
[scp 또는 sftp의 단일 명령으로 여러 파일 복사 가능] 복제본 (http://stackoverflow.com/questions/16886179/scp-or-sftp-copy-multiple-files-with-single-command) – tripleee