본문 바로가기

리눅스

rsync를 사용하여 SSH로 파일 및 디렉토리 복사하는 방법

반응형

rsync를 사용하여 SSH를 통해 파일을 복사하는 방법

rsync는 파일 및 디렉토리를 빠르고 효율적으로 동기화하는 대표적인 Linux 명령어입니다.

기본적으로 SSH를 통해 안전하게 원격 서버와 데이터를 전송할 수 있으며 변경된 파일만 복사하기 때문에 백업, 배포, 서버 간 파일 이전 작업에 자주 사용됩니다.

rsync 기본 특징

SSH 기반 암호화 통신 지원

변경된 파일만 전송 (증분 복사)

파일 권한, 소유자, 시간 정보 유지 가능

대용량 데이터 동기화에 효율적

로컬 ↔ 원격 / 원격 ↔ 로컬 모두 가능

기본적인 구문

Push (로컬 → 원격 서버)

rsync [OPTION] SRC [USER@]HOST:DEST

Pull (원격 서버 → 로컬)

rsync [OPTION] [USER@]HOST:SRC DEST

자주 사용하는 옵션

  • -a 아카이브 모드 (권한, 소유자, 시간 유지)
  • -v 상세 출력
  • -z 압축 전송
  • -h 사람이 읽기 쉬운 단위 표시
  • --progress 파일별 진행률 표시
  • --info=progress2 전체 전송 진행률 표시
  • -e "ssh" SSH 프로토콜 사용

1. 로컬 서버 → 원격 서버 디렉토리 복사

로컬 서버의 /Source 디렉토리를 원격 서버 2.2.2.2 의 /Destination/ 으로 복사합니다.

rsync -ahvz --progress -e "ssh" /Source root@2.2.2.2:/Destination/
  • /Source : 로컬 서버 원본 디렉토리
  • root@2.2.2.2 : 원격 서버 접속 계정 및 IP
  • /Destination/ : 원격 서버 대상 경로

2. 원격 서버 → 로컬 서버 디렉토리 복사

원격 서버 2.2.2.2 의 /Source 디렉토리를 로컬 서버 /Destination/ 으로 복사합니다.

rsync -ahvz --progress -e "ssh" root@2.2.2.2:/Source /Destination/

3. 특정 파일만 복사하는 방법 ★★★★★

로컬 서버의 nginx.conf 파일을 원격 서버 동일 경로로 복사합니다.

sudo rsync -avz --info=progress2 \
  --rsync-path="sudo rsync" \
  /etc/nginx/nginx.conf \
  ubuntu@192.168.10.222:/etc/nginx/nginx.conf

명령어 옵션

  • sudo : 로컬 서버 관리자 권한 실행
  • -avz : 권한 유지 + 상세 출력 + 압축
  • --info=progress2 : 전체 전송률 표시
  • --rsync-path="sudo rsync" : 원격 서버에서도 sudo 권한으로 저장

왜 --rsync-path="sudo rsync" 를 사용할까?

일반 사용자(ubuntu)는 /etc/nginx/ 경로에 쓰기 권한이 없습니다.

 

따라서 원격 서버에서 아래처럼 관리자 권한으로 rsync를 실행하도록 지정합니다.

sudo rsync

즉, 로그인은 ubuntu 계정으로 하고 실제 파일 저장은 root 권한으로 수행합니다.

728x90

복사 후 Nginx 설정 검증 및 재시작

ssh ubuntu@192.168.10.222 \
  "sudo nginx -t && sudo systemctl reload nginx"
  • nginx -t : 설정 파일 문법 검사
  • 오류 없을 경우 reload 수행
  • 서비스 중단 없이 설정 반영 가능

사용 예제

1. 서버 백업

rsync -avz /data backup@10.0.0.10:/backup/

2. 웹 소스 배포

rsync -avz ./html/ web@10.0.0.20:/var/www/html/

3. 제외 파일 지정

rsync -avz --exclude="*.log" /data/ backup@10.0.0.10:/backup/

주의사항 (중요)

슬래시(/) 차이

/Source

디렉토리 자체 복사

/Source/

디렉토리 내부 내용만 복사

rsync -av /data /backup/

→ /backup/data

rsync -av /data/ /backup/

→ /backup/ 내부에 내용만 복사

 

rsync는 단순 복사 명령어가 아니라 서버 운영자가 가장 많이 사용하는 동기화 도구입니다.

 

728x90
반응형