Linux 및 Unix 시스템에서 파일 전송을 위해 가장 많이 사용되는 **scp**와 **rsync**의 차이점과 사용법을 정리

결론부터 말씀드리면, 단순하고 빠른 1회성 전송은 scp, **대용량 파일, 백업, 반복적인 동기화 작업은 rsync**가 유리합니다.


1. SCP (Secure Copy Protocol)

**scp**는 SSH(Secure Shell) 프로토콜을 기반으로 파일을 안전하게 복사하는 명령어입니다. 로컬의 cp 명령어와 사용법이 비슷합니다.

  • 동작 방식: 소스 파일을 읽어서 대상 경로에 그대로 덮어쓰기 합니다.

  • 장점:

    • 사용법이 매우 간단하고 직관적입니다.

    • 대부분의 운영체제에 기본적으로 설치되어 있습니다.

    • 작은 파일 한두 개를 빠르게 보낼 때 편리합니다.

  • 단점:

    • 이어받기 불가: 전송 중 네트워크가 끊기면 처음부터 다시 보내야 합니다.

    • 중복 전송: 이미 대상에 동일한 파일이 있어도 무조건 다시 전송하여 대역폭을 낭비합니다.

    • 심볼릭 링크 처리가 번거롭습니다.

기본 사용법

Bash

# 로컬 파일을 원격으로 전송
scp [옵션] [보낼파일] [계정]@[IP주소]:[경로]

# 예시
scp -r ./my_folder user@192.168.1.10:/home/user/backup

주요 옵션: -r (디렉토리 복사), -P (포트 지정)


2. Rsync (Remote Sync)

**rsync**는 원격 또는 로컬 간에 파일을 효율적으로 동기화하는 도구입니다. 주로 SSH를 통해 데이터를 전송합니다.

  • 동작 방식: 소스와 대상의 차이점(Delta)만 비교하여 변경된 부분만 전송합니다.

  • 장점:

    • 증분 전송: 변경된 파일만 보내므로 속도가 빠르고 대역폭을 절약합니다.

    • 이어받기 가능: 전송이 중단되어도 끊긴 지점부터 다시 시작할 수 있습니다.

    • 압축 전송: 전송 시 데이터를 압축(-z)하여 속도를 높일 수 있습니다.

    • 권한, 소유자, 그룹 등 파일 속성을 그대로 유지(-a)하기 좋습니다.

  • 단점:

    • 옵션이 다양하여 초기 사용법이 scp보다 약간 복잡할 수 있습니다.

    • 동기화 전 파일 비교 과정에서 CPU 자원을 소모합니다.

기본 사용법

Bash

# 로컬 파일을 원격으로 동기화
rsync [옵션] [보낼파일] [계정]@[IP주소]:[경로]

# 예시
rsync -avzP ./my_folder/ user@192.168.1.10:/home/user/backup

주요 옵션:

  • -a (archive mode): 권한, 시간, 심볼릭 링크 등 보존

  • -v (verbose): 상세 진행 상황 출력

  • -z (compress): 전송 시 압축

  • -P: 전송 진행률 표시 및 이어받기 지원


3. SCP vs Rsync 상세 비교

Linux 및 Unix 시스템에서 파일 전송을 위해 가장 많이 사용되는 **scp**와 **rsync**의 차이점과 사용법을 정리

비교 항목 SCP (Secure Copy) Rsync (Remote Sync)
주요 목적 단순 파일 복사 파일 동기화 및 백업
전송 방식 무조건 전체 파일 전송 변경된 부분만 전송 (증분 전송)
속도 처음 전송 시 빠름 (오버헤드 적음) 반복 전송 시 압도적으로 빠름
네트워크 끊김 처음부터 다시 전송 중단된 부분부터 재개 가능
CPU 부하 낮음 (단순 암호화) 상대적으로 높음 (해시 비교 연산)
파일 속성 기본적으로는 내용만 복사 (옵션 필요) -a 옵션으로 거의 모든 속성 완벽 보존
설치 여부 SSH 설치 시 기본 포함 별도 설치 필요할 수 있음 (대부분 기본)

4. 언제 무엇을 써야 할까?

SCP를 추천하는 경우 🟢

  1. 단일 파일이나 작은 폴더를 급하게 보낼 때.

  2. 상대방 서버에 rsync가 설치되어 있는지 불확실할 때.

  3. 명령어가 기억나지 않아 가장 직관적인 방법이 필요할 때.

Rsync를 추천하는 경우 🔵

  1. **대용량 파일(GB 단위)**을 전송할 때 (중간에 끊겨도 이어받기 가능).

  2. 주기적인 백업 스크립트를 작성할 때 (변경된 것만 보내므로 시간 단축).

  3. 디렉토리 구조, 권한, 날짜 등 파일 속성을 완벽하게 유지해야 할 때.

  4. 네트워크 대역폭이 제한적이어서 압축 전송이 필요할 때.

💡 Tip: Rsync의 슬래시(/) 주의사항

rsync를 사용할 때 경로 끝의 / 유무가 중요합니다.

  • rsync -av /src/foo /dest : /dest/foo 가 생성됨 (폴더 자체 복사)

  • rsync -av /src/foo/ /dest : /dest 안에 foo의 내용물만 복사됨 (폴더 안의 파일들 복사)