
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)은 다릅니다. /를 붙이면 디렉토리 내용물만 타겟에 복사하고, /를 붙이지 않으면 디렉토리 자체를 타겟 안에 생성하여 복사합니다.
'리눅스' 카테고리의 다른 글
| [Linux] 리눅스 정기 작업 스케줄링: crontab (0) | 2025.10.25 |
|---|---|
| [Linux] 리눅스 텍스트 처리 및 검색 명령어: find, grep, awk, sed (0) | 2025.10.25 |
| [Linux] 리눅스 쉘 스크립트의 시작: SheBang(#!) (0) | 2025.10.25 |
| [Linux] 리눅스 네트워크 경로 및 병목 지점 확인: traceroute & mtr (0) | 2025.10.25 |
| [Linux] 리눅스 네트워크 진단 및 데이터 통신 명령어 (0) | 2025.10.25 |