scp는 Secure Copy Protocol의 약자로, SSH를 기반으로 원격 서버와 로컬 간에 파일을 안전하게 복사할 수 있는 명령어입니다. 리눅스, macOS, 윈도우(WSL 또는 Git Bash 등) 환경에서 모두 사용할 수 있으며, 파일 전송 시 암호화가 이루어집니다.
✅ 기본 문법
1
| scp [옵션] [소스 경로] [대상 경로]
|
[옵션]: -r, -P, -i 등[소스 경로]: 로컬 또는 원격 파일 경로[대상 경로]: 로컬 또는 원격 저장 경로
📁 로컬 ➡ 원격 서버
1
| scp ./file.txt user@remotehost:/home/user/
|
./file.txt: 현재 디렉토리의 파일user@remotehost: 전송 대상 서버의 계정과 주소/home/user/: 대상 경로
📁 원격 서버 ➡ 로컬
1
| scp user@remotehost:/home/user/file.txt ./downloaded/
|
📁 디렉토리 전체 전송 (-r)
1
| scp -r ./my_folder user@remotehost:/home/user/
|
📁 포트 번호 지정 (-P)
1
| scp -P 2222 file.txt user@remotehost:/home/user/
|
- SSH 포트가 기본(22)이 아닐 경우
-P로 포트 지정
📁 PEM 키 사용 시 (-i)
1
| scp -i mykey.pem file.txt ubuntu@ec2-xx-xx-xx.compute.amazonaws.com:/home/ubuntu/
|
- AWS EC2처럼 PEM 키를 사용하는 경우
-i 옵션 필요
📁 여러 파일 동시에 전송
1
| scp file1.txt file2.txt user@remotehost:/home/user/
|
⚙️ 실전 예제: 압축 파일 전송 및 해제
1. 파일 압축해서 전송
1
2
| tar czf project.tar.gz ./project_folder
scp project.tar.gz user@remotehost:/home/user/
|
2. 원격지에서 SSH로 압축 해제
1
| ssh user@remotehost 'tar xzf /home/user/project.tar.gz -C /home/user/'
|
💡 꿀팁
| 상황 | 명령 예시 |
|---|
| 홈 디렉토리에 바로 전송 | scp file.txt user@host:~ |
| 권한 문제 없이 전체 덮어쓰기 | scp -rp file user@host:/path/ |
| 백그라운드 전송 필요시 (큰 파일) | rsync를 추천 (속도와 재시도 기능 우수) |
🚫 주의사항
scp는 파일이 크거나 네트워크가 불안정할 경우 실패할 수 있음- 전송 중 중단되면 처음부터 다시 시작됨 (대안:
rsync) - 최신 OpenSSH에서는
scp보다 sftp나 rsync 사용을 권장함
마무리
scp는 간단한 파일 전송에 매우 유용한 도구입니다. 특히 별도 설정 없이 SSH 접속만 가능하다면 바로 파일을 보낼 수 있다는 점에서 편리합니다. 하지만 대규모 전송이나 불안정한 네트워크에서는 rsync 등의 다른 도구와 병행해서 사용하는 것이 좋습니다.