본문 바로가기
IT 학습 공간 ::)

리눅스 scp 명령어 사용법 ( 파일 전송 프로토콜 / 파일 보내기 /파일 받기 )

by 에스타롯사 2019. 5. 11.

안녕하세요 롯사입니다.

 

이번 시간 포스팅은 리눅스 기반 운영체제에서 사용하는 파일 전송 프로토콜 scp에 대해서

 

포스팅해보겠습니다. 리눅스 기반 시스템 기반을 운영하고 계신 현업 종사자 분들은 상황에

 

따라서 정말 유용한 프로토콜 이기 때문에 꼭 체크하고 넘어가시기 바랍니다.

 

항상 서두에서 언급하듯이 도대체 scp 무엇이고 뭐하는 녀석인지 아셔야겠죠?

 

 

what is scp?


ssh 원격 접속 프로토콜을 기반으로 한 SecureCopy(scp)의 약자로서 원격지에 있는 파일과 

디렉터리를  보내거나 가져올 때 사용하는 파일 전송 프로토콜입니다.

네트워크가 연결되어 있는 환경에서 ssh와 동일한 22번 포트와 identity file을 사용해서

파일을 송수신하기 때문에 보안적으로도 안정된 프로토콜이라고 할 수 있겠습니다.

 

 

 

자 그럼 본론으로 들어가서 사용하는 방법과 형식에 대해서 알아보겠습니다.

 

 

 

Local ( 로컬 ) ----> Remote (원격지)


1. 단일 파일을 원격지로 보낼 때.

 

구문 : # scp [옵션] [파일명] [원격지_id]@[원격지_ip]:[받는 위치]

 

           scp testfile2 root@192.168.159.129:/tmp/testclient  

 

현재 위치의 testfile2를 원격지 192.168.159.129:/tmp/testclient 경로에 파일을 전송한 상태입니다.

 

실제 원격지 ( 192.168.159.129:/tmp/testclient ) 경로에 testfile2 가 잘 전송된 것을 확인할 수 있습니다.

 

 

 

2. 복수의 파일을 원격지로 보낼 때.

 

구문 : # scp [옵션] [파일명 1] [파일명 2] [원격지_id]@[원격지_ip]:[받는 위치]

    

           scp tesfile1 testfile2 root@192.168.159.129:/tmp/testclient

 

현재 위치의 tesfile1 testfile3을 동시에 원격지 192.168.159.129:/tmp/testclient 경로에 파일을

전송한 상태입니다.

 

실제 원격지 ( 192.168.159.129:/tmp/testclient ) 경로에 tesfile1 testfile3 파일이 잘 전송된 것을 확인할 수 있습니다.

단일로 보내건 복수로 보내건 보내는 구문에는 크게 차의가 없이 파일명 뒤에 한 칸 띄우고 파일명을 넣어주시면

동일하게 전송이 가능합니다.

 

 

3. 여러 파일을 포함하고 있는 디렉터리를 원격지로 보낼 때. ( -r 옵션을 사용합니다 )

 

구문 : # scp [옵션] [디렉터리 이름] [원격지_id]@[원격지_ip]:[보낼 경로]

 

           scp -r testgogo root@192.168.159.129:/tmp/testclient

 

현재 위치의 여러 파일을 포함하는 testgogo라는 디렉터리를 -r 옵션을 부여하여 

원격지 192.168.159.129:/tmp/testclient 에 전송한 상태입니다.

 

이처럼 -r 옵션을 사용하면 보내고자 하는 디렉터리의 하위 폴더 및 파일까지 동시에 전송이 가능합니다.

 

추가적인 옵션을 살펴보면 다음과 같습니다.

r 디렉토리 내 모든 파일/디렉토리 복사 scp -r
p (소문자) 원본 권한 속성 유지 복사 scp -p
P (대문자) 포트 번호 지정 복사 scp -P [포트번호]
c (소문자) 압축 복사 scp -c
v 과정 출력 복사 scp -v
a 아카이브 모드 복사 scp -a

필요한 부분과 상황에 맞추어 옵션을 부여해서 사용이 가능하므로 적절하게 사용합시다.

 

 

 

 

 

Remote ( 원격지 ) ---> Local ( 로컬 )


1. 단일 파일을 원격지에서 로컬로 가져올 때

 

구문 : # scp [옵션] [원격지_id]@[원격지_ip]:[원본 위치] [받는 위치]

 

           scp root@192.168.159.129:/tmp/testclient/testfile2 /tmp

 

현재 로컬에서 원격지 192.168.159.129:/tmp/testcleint/testfile2 파일을 로컬의 /tmp 경로로 받은 상태입니다.

받는 것도 보내는 구문과 크게 차의가 없어서 어렵지 않습니다.

 

로컬의 /tmp 경로에서 보면 정상적으로 testfile2 가 다운된 걸 확인할 수 있습니다.

 

 

 

2. 복수의 파일을 원격지에서 로컬로 가져올 때

 

구문 : # scp [옵션] [원격지_id]@[원격지_ip]:[원본 위치 파일][원본 위치 파일] [받는 위치]

 

           scp root@192.168.159.129:"/tmp/testclient/testfile2 /tmp/testclient/testfile3" /tmp

           보낼 때랑 다르게 받을 때는 원격지 경로의 파일을 " " (큰따옴표)를 사용해서 묶어줍니다.

 

로컬의 /tmp 경로에 원격지의 testfile2와 testfile3을 동시에 보낸 다운로드한 상태입니다.

보내기와 다르게 구문의 차의 점은 다운로드할 원격지의 원본 경로를 " " ( 큰따옴표 )로 묶어주는 거 기억합시다.

 

로컬의 /tmp 경로에서 보면 정상적으로 testfile2, testfile3 파일이 다운된 걸 확인할 수 있습니다.

 

 

 

3. 여러 개의 파일을 포함하는 디렉터리 원격지에서 로컬로 가져올 때

 

구문 : # scp [옵션] [원격지_id]@[원격지_ip]:[디렉터리 위치] [받을 경로]

 

           scp -r root@192.168.159.129:/tmp/testclient/testgogo /tmp

 

보낼 때와 마찬가지로 가져올 때도 -r 옵션을 부여하여 디렉터리에 포함되어 있는 여러 파일과 디렉터리를 

동시에 다운 가능합니다.

 

정상적으로 로컬의 /tmp 경로에 여러 파일을 포함하는 testgogo라는 디렉터리가 잘 전송되었습니다.

보낼 때와 마찬가지로 옵션 적용은 동일하게 가능하기 때문에 옵션은 보내는 항목에서 참조해주시기 바랍니다.

 


이처럼 파일 전송 프로토콜 scp를 사용하면 네트워크로 연결된 원격지와의 파일 전송과 받기가 유기적으로

 

가능하기 때문에 현업에서 종사하고 계신 분이라면 시간과 작업시간 단축을 위해서라도 꼭 익혀두시기 바랍니다.

 

이만 포스팅을 마치겠습니다.