Linux/Ubuntu

[Linux, Ubuntu] ssh를 이용한 파일 전송 scp 명령어

Study with Me! 2024. 2. 20. 19:30

Linux에서 사용하는 scp 명령어는 Secure Copy의 약자로, 원격 시스템 간에 파일을 복사할 때 사용된다.

scp 명령어는 ssh 프로토콜을 사용해 파일을 복사해서 데이터 전송이 암호회되어 있어 보안이 강화된다고 한다.

 

파일 전송은 아래의 방향으로 가능하다.

  • 로컬 -> 원격 (Local to Remote)
  • 원격 -> 로컬 (Remote to Local
  • 원격 -> 원격 (Remote to Remote)

명령어를 사용할 때 앞 쪽에 전송할 파일의 경로, 뒤 쪽에 파일의 목적지가 온다는 것을 기억하면 쉽게 기억할 수 있을 것 같다.

 

연습용 명령어를 기록하며 글을 작성할 것인데, 연습 환경은 아래와 같다.

로컬: Mac, 원격1: UTM(ubuntu), 원격2: AWS(ubuntu)

 

로컬 컴퓨터에서 아래 명령어를 입력하면 echo 명령어로 test1에 입력한 내용이 출력될 것이다.

mkdir ~/test_local
cd ~/test_local
touch test1
echo "#1 test in local" >> test1
cat test1

원격1(UTM)에서는 아래 명령어를

mkdir ~/test_remote1
cd ~/test_remote1

원격2(AWS)에서는 아래 명령어를 입력했다.

mkdir ~/test_remote2
cd ~/test_remote2

scp 명령어 사용법

• 로컬 -> 원격 (Local to Remote)

scp [옵션] [전송할 파일 경로] [유저명]@[IP]:[받을 경로]

test1 파일을 원격1(UTM)에 전송해보자.

원격1(UTM)에 파일이 잘 도착했는지 확인해보자.

• 원격 -> 로컬 (Remote to Local)

scp [옵션] [유저명]@[IP]:[전송할 파일 경로] [받을 경로]

원격1(UTM)에서 test1 파일을 복사해 살짝 수정한다.

cp test1 test2
echo "#2 test in remote1" >> test2

로컬 컴퓨터에서 파일을 가져와 내용을 확인해보면 수정된 내용을 확인할 수 있다.

• 원격 -> 원격 (Remote to Remote)

scp [옵션] [유저명]@[IP]:[전송할 파일 경로] [유저명]@[IP]:[받을 경로]

원격1(UTM)에서 test2 파일을 복사해 살짝 수정한다.

cp test2 test3
echo "#3 test in local" >> test3

그 다음 원격1(UTM) -> 원격2(AWS) 로 test3 파일을 전송해보자.

원격2(AWS)는 보안키가 필요해서 -i 옵션과 함께 .pem 파일의 경로를 지정해줬다.

원격2(AWS)에 test3 파일이 잘 도착한 것을 확인할 수 있다.


scp 명령어의 옵션

(여러 옵션이 있겠지만 내가 사용할 옵션만 일단 작성...)

 

-r 옵션 : 디렉토리를 전송할 때 사용

-i 옵션 : identity file의 경로를 지정해서 사용


scp 명령어로 복수 파일 전송

• 로컬 -> 원격 (Local to Remote)

scp [옵션] [파일명1] [파일명2] [유저명]@[IP]:[받을 경로]

로컬 컴퓨터에서 a, b, c 파일을 만들고 원격1(UTM)으로 전송했다.

잘 도착한 것을 확인할 수 있다.

• 원격 -> 로컬 (Remote to Local)

scp [옵션] [유저명]@[IP]:"[파일명1] [파일명2]" [받을 경로]

• 원격 -> 원격 (Remote to Remote)

scp [옵션] [유저명]@[IP]:"[파일명1] [파일명2]" [유저명]@[IP주소]:[받을 경로]