Rsync와 SSH 커스텀 포트 사용법¶
rsync로 파일을 동기화할 때 SSH 커스텀 포트를 지정하는 방법을 설명합니다.
개요¶
rsync는 파일 동기화의 표준 도구이지만, SSH 커스텀 포트 사용 시 올바른 문법을 사용해야 합니다. 많은 사용자가 --port 옵션을 잘못 사용하여 연결 오류를 경험합니다.
graph LR
A[Source Server] -->|rsync over SSH| B[Destination Server]
subgraph "SSH Connection"
C[Port 22 - 기본]
D[Port 2722 - 커스텀]
end
style D fill:#e8f5e8
일반적인 실수¶
잘못된 명령어¶
# ❌ 잘못된 사용법 - Connection refused 오류 발생
sudo rsync -avz /source/* --port 2722 user@host:/destination/
--port 옵션은 rsync 데몬 프로토콜용이며, SSH 연결의 포트를 지정하지 않습니다.
올바른 명령어¶
rsync 기본 옵션¶
| 옵션 | 설명 |
|---|---|
-a |
Archive 모드 (권한, 소유자, 타임스탬프 보존) |
-v |
Verbose 출력 |
-z |
전송 중 압축 |
-e |
원격 셸 지정 |
-P |
진행률 표시 + 부분 전송 유지 |
--delete |
소스에 없는 파일 삭제 |
--dry-run |
실제 전송 없이 테스트 |
커스텀 SSH 포트 사용¶
기본 문법¶
실제 예제¶
# 포트 2722로 백업
rsync -avz -e "ssh -p 2722" /mnt/nas/backup/ [email protected]:/mnt/backup/
# 진행률 표시와 함께
rsync -avzP -e "ssh -p 2722" /home/user/data/ user@server:/backup/
# 특정 SSH 키 사용
rsync -avz -e "ssh -p 2722 -i ~/.ssh/backup_key" /data/ user@server:/backup/
SSH 설정으로 간소화¶
~/.ssh/config 설정¶
반복적으로 같은 서버에 접속한다면 SSH 설정 파일을 사용하세요:
# ~/.ssh/config
Host backup-server
HostName 192.168.1.100
User nodove
Port 2722
IdentityFile ~/.ssh/backup_key
간소화된 rsync 명령¶
고급 사용법¶
대역폭 제한¶
제외 패턴¶
# 특정 파일/폴더 제외
rsync -avz -e "ssh -p 2722" \
--exclude='*.log' \
--exclude='node_modules/' \
--exclude='.git/' \
/project/ user@host:/backup/
미러링 (동기화)¶
일반적인 시나리오¶
서버 백업¶
#!/bin/bash
# backup.sh
REMOTE="backup-server"
SOURCE="/var/www/html/"
DEST="/backups/web/$(date +%Y%m%d)/"
LOG="/var/log/backup.log"
rsync -avz --delete \
-e "ssh -p 2722" \
--exclude='*.log' \
--exclude='cache/' \
"$SOURCE" "$REMOTE:$DEST" >> "$LOG" 2>&1
echo "Backup completed: $(date)" >> "$LOG"
양방향 동기화¶
# 로컬 → 원격
rsync -avz -e "ssh -p 2722" /local/data/ user@server:/remote/data/
# 원격 → 로컬
rsync -avz -e "ssh -p 2722" user@server:/remote/data/ /local/data/
여러 서버로 배포¶
#!/bin/bash
SERVERS=("server1" "server2" "server3")
SOURCE="/app/release/"
for server in "${SERVERS[@]}"; do
echo "Deploying to $server..."
rsync -avz -e "ssh -p 2722" "$SOURCE" "$server:/opt/app/"
done
문제 해결¶
Connection refused¶
Permission denied¶
# SSH 키 권한 확인
chmod 600 ~/.ssh/id_*
chmod 700 ~/.ssh
# verbose 모드로 디버깅
rsync -avvz -e "ssh -p 2722 -v" /source/ user@host:/dest/
느린 전송 속도¶
# 압축 비활성화 (이미 압축된 파일)
rsync -av -e "ssh -p 2722 -c [email protected]" /source/ user@host:/dest/
# 체크섬 대신 크기+시간 비교
rsync -avz --size-only -e "ssh -p 2722" /source/ user@host:/dest/
rsync vs 다른 도구¶
graph TD
A[파일 전송 도구] --> B[rsync]
A --> C[scp]
A --> D[sftp]
A --> E[rclone]
B --> B1[증분 전송<br/>대역폭 효율적]
C --> C1[간단한 복사<br/>전체 파일 전송]
D --> D1[인터랙티브<br/>파일 브라우징]
E --> E1[클라우드 스토리지<br/>다양한 백엔드]
style B fill:#e8f5e8
| 도구 | 장점 | 단점 | 사용 사례 |
|---|---|---|---|
| rsync | 증분 전송, 효율적 | 설정 복잡 | 대용량 백업, 동기화 |
| scp | 간단함 | 전체 파일 전송 | 단일 파일 복사 |
| sftp | 인터랙티브 | 자동화 어려움 | 수동 파일 관리 |
| rclone | 클라우드 지원 | 로컬 전용 복잡 | 클라우드 동기화 |