본문 바로가기
개인 공부/설치 및 기본 사용법

[리눅스 파일 전송] 서버에 데이터 전송&다운 (scp 명령어)

by 장어진 2022. 5. 9.

안녕하세요.

해당 글이 이 카테고리로 들어가는 것이 맞는 지는 모르겠지만, 정리해둘 필요성이 있어 정리합니다. 


다양한 이유로 원격에 있는 서버로 파일을 전송해야할 필요성이 있을 것입니다. 그럴 때 데이터를 주고받을 수 있는 리눅스 명령어 중 하나인 scp를 통해 알아보고자 합니다. 

 

우선 scp는 ssh 원격 접속 프로토콜을 기반으로 한 SecureCopy의 약자라고 합니다. 원격 서버에 있는 파일을 가져오거나 전송할 때 사용하는 파일 전송 프로토콜입니다. 

 

네트워크가 연결되어 있는 환경에서 ssh와 동일하게 22번 포트를 사용하여 파일을 주고받기 때문에 보안 관점에서도 안정된 프로토콜이라고 합니다. 


그렇다면 어떻게 파일을 주고 받냐! 

전송할 때와 받을 때를 구분지어 설명하겠습니다. 

 

1️⃣내 PC (Local) -> 원격지(Remote) (서버로 파일 전송)

여기서도 디렉토리를 보낼 것인지, 단일 파일을 보낼 것인지에 따라 옵션을 줘야해서 명령어가 살짝 달라집니다. 

  1. 단일 파일을 보냄

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

여기서 서버를 접속할 때 포트 번호를 요구한다면 -P(대문자)로 포트번호를 옵션으로 넣어주어야 합니다.  

위와 같이 명령어를 입력했다면 내 pc의 dataset이라는 폴더에 있는 test.txt파일을 서버의 workspace/workspace/dataset이라는 폴더로 전송하겠다는 것이 됩니다. 

 

  2. 여러 파일을 보냄

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

위와 동일하게 옵션 뒤에 전송하고자 하는 파일명1, 2를 입력해주면 됩니다. 

 

  3. 디렉토리(폴더)를 보냄

    scp -r [옵션] [전송 폴더명] [원격지_id]@[원격지_ip]:[받는 위치]

해당 명령어는 1번과 동일하지만, 옵션이 하나 더 추가됩니다. -r로 옵션을 부여해야합니다. 

위와 같은 식으로 사용하게 되고 이 때는 내 PC에 있는 dataset 폴더를 서버의 workspace/workspace/dataset 폴더 아래에 전송하게 됩니다.

 

이 때 전송된 파일 이름은 보내는 파일이나 폴더의 명이 사용됩니다.

추가 옵션

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

2️⃣원격지(Remote) -> 내 PC (Local) (서버에서 파일 다운받기)

여기서도 디렉토리를 보낼 것인지, 단일 파일을 보낼 것인지에 따라 옵션을 줘야해서 명령어가 살짝 달라집니다. 

  1. 단일 파일을 다운

    scp [옵션] [원격지_id]@[원격지_ip]:[보내는 위치] [받는 위치]

여기서 서버를 접속할 때 포트 번호를 요구한다면 위와 동일하게 -P(대문자)로 포트번호를 옵션으로 넣어주어야 합니다.  위와 같이 명령어를 입력했다면 서버의 workspace/workspace/dataset이라는 폴더에 있는 test.txt파일을 내 pc의 /dataset이라는 폴더에 다운하겠다는 것이 됩니다. 

 

  2. 여러 파일을 다운

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

보낼 때와 비슷하지만, 다운받을 때는 파일을 큰 따옴표 " "를 사용해 묶어주어야 합니다. 예시는 아래와 같습니다. 

  3. 디렉토리(폴더)를 다운

    scp -r [옵션] [원격지_id]@[원격지_ip]:[폴더명] [받는 위치]

이 역시 서버로 보낼 때와 동일하게 -r 옵션을 사용합니다. 

위와 같은 식으로 사용하게 되고 이 때는 서버의 workspace/dataset 폴더를 하위 디렉토리 포함하여 내 PC의 data 폴더 아래 다운 받게됩니다. 

 

이 때 전송된 파일 이름은 보내는 파일이나 폴더의 명이 사용됩니다.

 

이외의 추가 옵션은 서버로 파일 전송할 때와 동일하게 사용되니 위의 표를 참고바랍니다. 

728x90