실행 환경
- OS : Ubuntu 22.04 (AWS EC2)
- MySQL : 8.0.35
문제 상황
- 기존에 사용하던 EC2 인스턴스에서
mysqldump
명령어를 이용해서 다른 EC2 인스턴스로 데이터를 옮기는 작업을 진행하고 있었다. - 저장된 데이터가 적을 때는
cat
명령어를 이용해서 직접 마우스로 드래그해서 복사해서 붙여넣어도 큰 문제가 없었다. - 하지만, 텍스트가 많이 저장된 DB를 dump 하면 마우스로 한 번에 파일의 모든 내용을 복사할 수 없었다.
- 그래서 효율적이고 빠르게 파일을 전송할 수 있는 방법을 찾게 되었다.
문제 해결
scp
명령어를 이용하면 다른 컴퓨터로 파일을 통째로 전송하는 것이 가능하다.scp
는ssh
와 동일하게 22번 포트를 이용해서 파일을 주고 받을 수 있다.- EC2 인스턴스에
ssh
를 접속할 때 키 페어 파일 (.pem
,.cer
) 파일을 이용해서 접속하는 것처럼scp
도 키 페어 파일을 사용하여 인증하기 때문에 안전하다.
scp 명령어 사용법
.pem
파일을 이용해서 파일을 전송한다고 가정하면 아래와 같이 사용할 수 있다.
1
scp -i [pem 파일] [현재 로컬에서 전송하고자 하는 파일] [사용자 계정]@[목적지 ip주소]:[목적지에 저장할 경로]
- 이해를 돕기 위해 예시를 통해 알아보자.
1
scp -i ~/.ssh/secret.pem backup.sql ubuntu@10.0.0.1:/home/ubuntu/service
-i ~/.ssh/secret.pem
:~/.ssh
디렉토리에 있는secret.pem
파일을 이용해서 IP 주소가10.0.0.1
인 컴퓨터에 접근 권한이 있다는 것을 인증한다.backup.sql
: 현재 디렉토리에 있는backup.sql
파일을 전송한다.ubuntu@10.0.0.1
: IP주소가10.0.0.1
인 컴퓨터의ubuntu
계정의 권한으로 접근한다./home/ubuntu/service
: IP주소가10.0.0.1
인 컴퓨터에/home/ubuntu/service
경로에backup.sql
파일을 저장한다.
파일 전송 순서
옮기고자 하는 원본 파일이 있는 EC2 인스턴스를 source
, 옮기고자 하는 EC2 인스턴스를 dest
라고 해보자.
- 로컬 →
source
로dest
의.pem
키를 전송한다. - 1번에서 옮긴
.pem
키를 이용해서source
→dest
로source
에서 옮기고자 하는 파일을dest
로 옮긴다. dest
에 접속해서 2번에서 전송한 파일이 제대로 도착했는지 확인한다.
참고자료
- [Linux] scp를 이용해 로컬과 원격에 파일 전송하기 [github.io]
- ftp, ftps, sftp, ssh, scp 개념 정리 [티스토리]