본문 바로가기
[OS]/Linux

[Linux] scp 명령어 사용법

by METAVERSE STORY 2022. 8. 24.
반응형

 

 

Linux에서 파일 전송하는 방법에 대해서 검색중 좋은 명령어가 있어 공유하고 기록용으로 포스팅을 진행 했다.

 

윈도우에서 Linux로 파일 전송은 보통 FTP, SFTP로 진행하면 아주 간단하게 가능하다.
필자는 FileZilla로 보통 활용하고 있다.

https://filezilla-project.org/

하지만, Linux에서 Linux의 경우는 어떻게 할까?

네트워크가 연결되어 있고, ssh 포트가 열려 있다면 ssh 원격 접속 프로토콜을 기반으로 한 Secure Copy(scp)의 약자로서 원격지에 있는 파일과 디렉토리를 보내거나 가져올 때 사용하는 파일 전송 프로토콜이다.
네트워크가 연결되어 있는 환경에서 ssh와 동일한 22번 포트와 identuty 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

현재 위치의 testfile1 testfile3을 동시에 원격지 192.168.159.129:/tmp/testclient 경로에 파일을 전송한 상태이다.

실제 원격지 (192.168.159.129:/tmp/testclient) 경로에 testfile1 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옵션을 사용하면 보내고자 하는 디렉터리의 하위 폴더 및 파일까지 동시에 전송이 가능하다.

추가적인 옵션을 살펴보면 아래와 같다.

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

 

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

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

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

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

현재 로컬에서 원격지 192.168.159.129:/tmp/testclient/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라는 디렉터리가 잘 전송되었다.
보낼때와 마찬가지로 옵션 적용은 동일학세 가능하기 때문에 옵션은 보내는 항목에서 참조해야한다.

 

 

출처 :

https://wlsvud84.tistory.com/11

 

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

안녕하세요 롯사입니다. 이번 시간 포스팅은 리눅스 기반 운영체제에서 사용하는 파일 전송 프로토콜 scp에 대해서 포스팅해보겠습니다. 리눅스 기반 시스템 기반을 운영하고 계신 현업 종사자

wlsvud84.tistory.com

 

반응형

댓글