본문 바로가기
리눅스

[Linux] 리눅스 원격 파일 전송 및 동기화: scp, rsync

by ImirAin 2025. 10. 30.

 

 

1. scp (Secure Copy Protocol): SSH 기반의 안전한 복사

scp는 SSH(Secure Shell) 프로토콜을 기반으로 하는 파일 전송 프로토콜입니다. SSH와 동일하게 22번 포트와 Identity File(키)을 사용하여 파일을 송수신하기 때문에 보안적으로 매우 안정적입니다.

1.1. scp 기본 구문

scp [option] [source] [destination]

구분 로컬 -> 원격 (업로드) 원격 -> 로컬 (다운로드)
단일 파일 scp file.txt user@ip:/remote/path scp user@ip:/remote/file.txt /local/path
디렉토리 scp -r mydir user@ip:/remote/path scp -r user@ip:/remote/mydir /local/path

1.2. scp 활용 예시

명령어 용도
단일 파일 전송 scp file root@192.168.1.93:/~
디렉토리 전송 scp -r dir root@192.168.1.93:/~ (-r 옵션으로 하위 파일 포함)
단일 파일 다운로드 scp root@192.168.1.93:/~/testfile /tmp
복수 파일 다운로드 scp root@192.168.1.93:"/tmp/test1 /tmp/test2" /tmp (경로를 따옴표로 묶음)

2. rsync (Remote Sync): 효율적인 동기화 및 백업

rsync는 파일을 효율적으로 전송하고 동기화하기 위한 유틸리티입니다. scp나 rcp보다 빠르고 효율적이며, 변경된 사항만 빠르게 전송하는 델타 인코딩 알고리즘(Delta Encoding Algorithm)을 사용합니다.

  • 특징:
    • 효율성: 변경된 부분만 전송하여 네트워크 대역폭 사용을 최소화합니다.
    • 유연성: 로컬-로컬, 로컬-원격, 원격-로컬 등 다양한 동기화 시나리오를 지원합니다.
    • 프로토콜: 기본적으로 로컬 셸 프로토콜(SSH 등) 기반에서 동작하므로, SSH 기반으로 사용 시 별도의 방화벽 오픈이 필요 없습니다.

2.1. rsync 기본 구문

rsync [option] [source] [target]

2.2. rsync 주요 옵션

옵션 설명
-a Archive 모드: 가장 많이 사용되며, -rlptgoD 옵션을 모두 포함합니다. (심볼릭 링크, 권한, 시간, 그룹, 소유자, 장치 파일 등 모든 속성 유지)
-v Verbose: 전송 과정을 더 자세하게 출력합니다.
-z Compress: 전송 시 파일을 압축하여 네트워크 사용량을 줄입니다.
-h Human-readable: 복사 결과를 사람이 읽기 쉬운 형태(MB, GB)로 출력합니다.
-r Recursive: 디렉토리와 하위 파일들을 복사할 때 사용합니다. (디렉토리 복사 시 -a에 포함됨)
--exclude 제외 대상 지정: 동기화할 때 특정 파일이나 디렉토리를 제외합니다.

2.3. rsync 동기화 예시

작업 명령어 예시
Local -> Remote (백업) rsync -avz /local/data/ user@ip:/remote/backup/
Remote -> Local (복구) rsync -avz user@ip:/remote/backup/ /local/data/
특정 파일/디렉토리 제외 rsync -avz --exclude 'temp/' /src/ /dest/

⭐ rsync 팁: 소스 디렉토리 뒤에 슬래시(/)를 붙이는 것(dir/)과 붙이지 않는 것(dir)은 다릅니다. /를 붙이면 디렉토리 내용물만 타겟에 복사하고, /를 붙이지 않으면 디렉토리 자체를 타겟 안에 생성하여 복사합니다.