[Linux, Ubuntu] ssh를 이용한 파일 전송 scp 명령어
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주소]:[받을 경로]