scp 사용법
scp란
ssh 원격 접속을 기반으로 한 파일 전송 프로토콜이다
- 원격지에 있는 파일과 디렉터리를 보내거나 가져올때 사용한다
- 네트워크와 연결되어 있는 환경에서 ssh와 동일하게 22번 포트와 identity file을 사용하기 때문에 보안적으로 안정된 프로토콜이다
자주 사용하는 옵션
- -a: 디렉터리 및 하위 모든 파일(아카이브 모드) 복사
- -c: 압축하여 복사
- -p: 원본 권한 속성값 복사
- -P: 포트 번호 지정 복사
- -r: 디렉터리 및 하위 모든 파일 복사
- -v: 복사 과정을 출력
- -i: pem키와 같은 인증키 필요시 사용
로컬 -> 리모트 전송
모든 명령어 로컬 서버에서 입력
- 하나의 파일을 리모토로 전송
- scp [옵션][파일명][리모트id]@[리모트ip]:[받는 디렉터리 위치]
$ scp test1 ubuntu@123.123.123.123:/tmp/test
- scp [옵션][파일명][리모트id]@[리모트ip]:[받는 디렉터리 위치]
- 여러 파일을 리모토로 전송
- scp [옵션][파일명1][파일명2][리모트id]@[리모트ip]:[받는 디렉터리 위치]
$ scp test1 test2 ubuntu@123.123.123.123:/tmp/test
- scp [옵션][파일명1][파일명2][리모트id]@[리모트ip]:[받는 디렉터리 위치]
- 여러 파일 포함된 폴더 리모토로 전송
- scp [옵션][파일명][리모트id]@[리모트ip]:[받는 디렉터리 위치]
$ scp -r test_folder ubuntu@123.123.123.123:/tmp/test
- scp [옵션][파일명][리모트id]@[리모트ip]:[받는 디렉터리 위치]
- ec2처럼 접속에 키 파일 인증을 요구하는 경우
- -i 옵션을 사용해 전송
- scp [옵션][pem키 디렉터리][파일명][리모트id]@[리모트ip]:[받는 디렉터리 위치]
$ scp -i /home/keys/test.pem test1 ubuntu@123.123.123.123:/tmp/test
리모트 -> 로컬 전송
모든 명령어 로컬 서버에서 입력
- 하나의 파일을 로컬로 전송
- scp [옵션][원격지id]@[원격지ip]:[원본 파일 위치][받는 디렉터리 위치]
$ scp ubuntu@123.123.123.123:/tmp/test1 /tmp
- scp [옵션][원격지id]@[원격지ip]:[원본 파일 위치][받는 디렉터리 위치]
- 여러 파일을 로컬로 전송
- scp [옵션][원격지id]@[원격지ip]:[원본 파일 위치1][원본 파일 위치2][받는 디렉터리 위치]
$ scp ubuntu@123.123.123.123:"/tmp/test1/tmp/test2" /tmp
- scp [옵션][원격지id]@[원격지ip]:[원본 파일 위치1][원본 파일 위치2][받는 디렉터리 위치]
- 여러 파일 포함된 폴더 로컬로 전송
- scp [옵션][원격지id]@[원격지ip]:[디렉터리 위치][받는 디렉터리 위치]
$ scp -r ubuntu@123.123.123.123:/tmp/test_folder /tmp
- scp [옵션][원격지id]@[원격지ip]:[디렉터리 위치][받는 디렉터리 위치]
- ec2처럼 접속에 키 파일 인증을 요구하는 경우
- -i 옵션을 사용해 전송
- scp [옵션][pem키 디렉터리][원격지id]@[원격지ip]:[디렉터리 위치][받는 디렉터리 위치]
$ scp -ri /home/keys/test.pem ubuntu@123.123.123.123:/tmp/test_folder /tmp
참고 사항
pem키에 대한 권한 에러 발생시
- owner만 읽을 수 있게 chmod 명령어로 권한을 바꾸어준다
$ chmod 400 {your pem_name}.pem
- 파일 권한 해석
ex) drwx/rwx/rwx- d: 디렉터리
- 첫번째 rwx: owner의 권한으로 Read(4), Write(2), Execute(1) 가능
- 두번째 rwx: owner가 포함된 그룹의 권한으로 Read(4), Write(2), Execute(1) 가능
- 세번째 rwx: 그 외 권한으로 Read(4), Write(2), Execute(1) 가능