결론부터 말씀드리면, 단순하고 빠른 1회성 전송은 scp, **대용량 파일, 백업, 반복적인 동기화 작업은 rsync**가 유리합니다.
1. SCP (Secure Copy Protocol)
**scp**는 SSH(Secure Shell) 프로토콜을 기반으로 파일을 안전하게 복사하는 명령어입니다. 로컬의 cp 명령어와 사용법이 비슷합니다.
-
동작 방식: 소스 파일을 읽어서 대상 경로에 그대로 덮어쓰기 합니다.
-
장점:
-
사용법이 매우 간단하고 직관적입니다.
-
대부분의 운영체제에 기본적으로 설치되어 있습니다.
-
작은 파일 한두 개를 빠르게 보낼 때 편리합니다.
-
-
단점:
-
이어받기 불가: 전송 중 네트워크가 끊기면 처음부터 다시 보내야 합니다.
-
중복 전송: 이미 대상에 동일한 파일이 있어도 무조건 다시 전송하여 대역폭을 낭비합니다.
-
심볼릭 링크 처리가 번거롭습니다.
-
기본 사용법
# 로컬 파일을 원격으로 전송
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 자원을 소모합니다.
-
기본 사용법
# 로컬 파일을 원격으로 동기화
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 상세 비교

| 비교 항목 | SCP (Secure Copy) | Rsync (Remote Sync) |
| 주요 목적 | 단순 파일 복사 | 파일 동기화 및 백업 |
| 전송 방식 | 무조건 전체 파일 전송 | 변경된 부분만 전송 (증분 전송) |
| 속도 | 처음 전송 시 빠름 (오버헤드 적음) | 반복 전송 시 압도적으로 빠름 |
| 네트워크 끊김 | 처음부터 다시 전송 | 중단된 부분부터 재개 가능 |
| CPU 부하 | 낮음 (단순 암호화) | 상대적으로 높음 (해시 비교 연산) |
| 파일 속성 | 기본적으로는 내용만 복사 (옵션 필요) | -a 옵션으로 거의 모든 속성 완벽 보존 |
| 설치 여부 | SSH 설치 시 기본 포함 | 별도 설치 필요할 수 있음 (대부분 기본) |
4. 언제 무엇을 써야 할까?
SCP를 추천하는 경우 🟢
-
단일 파일이나 작은 폴더를 급하게 보낼 때.
-
상대방 서버에 rsync가 설치되어 있는지 불확실할 때.
-
명령어가 기억나지 않아 가장 직관적인 방법이 필요할 때.
Rsync를 추천하는 경우 🔵
-
**대용량 파일(GB 단위)**을 전송할 때 (중간에 끊겨도 이어받기 가능).
-
주기적인 백업 스크립트를 작성할 때 (변경된 것만 보내므로 시간 단축).
-
디렉토리 구조, 권한, 날짜 등 파일 속성을 완벽하게 유지해야 할 때.
-
네트워크 대역폭이 제한적이어서 압축 전송이 필요할 때.
💡 Tip: Rsync의 슬래시(/) 주의사항
rsync를 사용할 때 경로 끝의 / 유무가 중요합니다.
-
rsync -av /src/foo /dest : /dest/foo 가 생성됨 (폴더 자체 복사)
-
rsync -av /src/foo/ /dest : /dest 안에 foo의 내용물만 복사됨 (폴더 안의 파일들 복사)