우분투 실전 명령어 | scp/sftp 파일 전송 실전
언제 쓰는가
운영 중인 서버에서 설정 파일이나 로그를 다른 서버/로컬로 옮겨야 할 때 scp와 sftp를 가장 자주 씁니다. 별도 에이전트 설치 없이 SSH만 열려 있으면 바로 사용할 수 있어서, 긴급 대응 상황에서도 빠르게 처리할 수 있습니다. 특히 배포 전 설정 백업, 장애 로그 수집, 점프 서버 경유 전송에서 유용합니다.
바로 쓰는 명령어
# 로컬 -> 원격 서버로 파일 1개 전송
scp ./nginx.conf [email protected]:/etc/nginx/nginx.conf
# 원격 -> 로컬로 로그 파일 가져오기
scp [email protected]:/var/log/nginx/error.log ./error.log
# 디렉터리 통째로 전송
scp -r ./deploy [email protected]:/opt/app/
# 포트가 2222인 서버로 전송
scp -P 2222 ./app.env [email protected]:/opt/app/.env
# 개인키 지정
scp -i ~/.ssh/prod_ed25519 ./backup.sql [email protected]:/data/backup/
# 대역폭 제한(예: 4MB/s 근처)으로 네트워크 영향 줄이기
scp -l 32768 ./big.tar [email protected]:/data/
핵심 옵션/패턴
-r: 디렉터리 재귀 전송. 디렉터리 보낼 때 빠뜨리면 실패합니다.-P <port>: SSH 포트 지정. 소문자-p가 아니라 대문자-P입니다.-i <key>: 특정 SSH 키 사용.-C: 압축 전송. 텍스트 로그처럼 압축률 높은 파일에서 체감이 큽니다.-l <Kbit/s>: 대역폭 제한. 업무 시간대 네트워크 혼잡을 줄일 때 유용합니다.
sftp는 여러 파일을 대화형으로 옮길 때 편합니다.
# 접속
sftp -i ~/.ssh/prod_ed25519 [email protected]
# sftp 내부 명령
pwd
lpwd
cd /var/log/nginx
lcd ./logs
mget *.log
put ./nginx.conf
bye
명령 출력 예시
$ scp ./nginx.conf [email protected]:/etc/nginx/nginx.conf
nginx.conf 100% 2.1KB 88.4KB/s 00:00
$ scp [email protected]:/var/log/nginx/error.log ./error.log
error.log 100% 184KB 1.3MB/s 00:00
sftp> mget *.log
Fetching /var/log/nginx/access.log to access.log
/var/log/nginx/access.log 100% 12MB 3.1MB/s 00:03
Fetching /var/log/nginx/error.log to error.log
/var/log/nginx/error.log 100% 184KB 532KB/s 00:00
자주 하는 실수
scp -p 2222처럼 소문자-p를 써서 포트 지정이 안 되는 경우- 목적지 경로 마지막
/유무를 헷갈려 원치 않는 경로에 파일이 들어가는 경우 - 원격 파일 덮어쓰기 전 백업 없이 바로 전송하는 경우
- 권한이 필요한 경로(
/etc,/root)에 일반 계정으로 직접 복사하려다 실패하는 경우
검증 방법
# 원격 서버에서 파일 존재/권한/수정시간 확인
ssh [email protected] "ls -lh /etc/nginx/nginx.conf && stat /etc/nginx/nginx.conf"
# 전송 전후 해시 비교
sha256sum ./nginx.conf
ssh [email protected] "sha256sum /etc/nginx/nginx.conf"
운영 팁
- 운영 파일을 덮어쓰기 전에 원격에서 먼저 백업하세요.
ssh [email protected] "cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.$(date +%F-%H%M%S).bak"
- 다수 서버 반복 작업이면
rsync(재전송 최적화)나 배포 도구(Ansible)로 전환하는 게 안정적입니다.
출처
- OpenSSH Manual
- Ubuntu Server Guide
- Red Hat Documentation