Post

scp 서버로 파일 전송 및 서버에서 파일 다운로드

scp 서버로 파일 전송 및 서버에서 파일 다운로드

scpSecure 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/
  • -r 옵션으로 디렉토리 전체 복사 가능

📁 포트 번호 지정 (-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보다 sftprsync 사용을 권장함

마무리

scp는 간단한 파일 전송에 매우 유용한 도구입니다. 특히 별도 설정 없이 SSH 접속만 가능하다면 바로 파일을 보낼 수 있다는 점에서 편리합니다. 하지만 대규모 전송이나 불안정한 네트워크에서는 rsync 등의 다른 도구와 병행해서 사용하는 것이 좋습니다.


This post is licensed under CC BY 4.0 by the author.