본문 바로가기
C.W.K.
Stream
Lesson 04 of 08 · published

scp, rsync, sftp 비교

~8 min · scp, sftp, rsync

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

세 도구가 잘 맞는 상황

  • scp: 위치가 분명한 파일을 한 번 복사할 때 간단해.
  • rsync: 여러 파일을 반복해서 동기화하고 변경분만 전송할 때 알맞아.
  • sftp: 원격 디렉터리를 직접 둘러보며 받을 파일을 고를 때 편해.

scp 기본 명령

scp file.txt user@host:/path/         # 로컬에서 원격으로
scp user@host:/path/file.txt .         # 원격에서 로컬로
scp -r dir/ user@host:/path/           # 디렉터리 재귀 복사
scp -P 2222 file.txt user@host:        # 사용자 지정 포트

scp에서 포트 옵션은 대문자 -P야. 소문자 -p는 시각과 모드를 보존하므로, 비슷한 SSH 계열 명령의 플래그가 모두 같다고 가정하지 마.

현대 scp가 사용하는 프로토콜

현대 OpenSSH의 scp는 기본 전송에 SFTP 프로토콜을 사용해. 명령 자체가 폐기된 것은 아니지만 예전 SCP 프로토콜과 원격 경로 확장 방식이 다를 수 있어. 원격 셸의 경로 확장에 기대던 스크립트는 표본으로 동작을 확인하고 전송 계약에 맞는 도구를 골라.

sftp 대화형 사용

sftp user@host
sftp> pwd
sftp> ls
sftp> cd /var/log
sftp> get app.log         # 다운로드
sftp> put local.txt       # 업로드
sftp> bye

상황에 맞춰 고르기

  • 파일 하나와 양쪽 위치가 분명하면 scp를 써.
  • 여러 파일을 반복 전송하고 중단 뒤 재개와 변경분 전송이 필요하면 rsync를 써.
  • 원격 트리를 손으로 둘러보고 받을 항목을 정하려면 sftp를 써.
  • 원격 경로를 파일 시스템처럼 마운트해야 한다면 현재 운영체제가 지원하는 SSHFS 구현과 캐시, 연결 끊김, 권한 동작을 따로 검토해.

전송 성공과 원자적 반영은 달라

큰 설정 파일을 최종 경로로 바로 복사하면 다른 프로세스가 전송 중인 부분 파일을 읽을 수 있어. 배포 계약이 원자적 노출을 요구한다면 임시 이름으로 올리고 체크섬과 권한을 확인한 뒤 원격에서 이름을 바꿔.

원격 경로에는 여러 해석 경계가 있어

공백, 와일드카드, 콜론은 버전과 프로토콜에 따라 로컬 셸, 전송 클라이언트, 원격 측 가운데 서로 다른 곳에서 해석될 수 있어. 신뢰하지 않는 입력을 경로 문자열에 이어 붙이지 말고 작은 표본으로 따옴표 동작을 확인해.

Code

빠른 scp 형태·bash
scp ~/notes.md user@server:~/
scp user@server:/var/log/app.log .
# ssh_config 별칭으로 명령 단순화
scp big.tar work:/tmp/

External links

Exercise

시험 서버와 작은 파일을 준비해 scp, sftp의 put, rsync로 각각 전송해. 전송 뒤 체크섬과 권한을 비교하고, 큰 파일을 시험할 때는 압축 옵션이 네트워크와 CPU 사용량에 어떤 영향을 주는지도 측정해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.