DevSecOps/etc

rsync를 활용한 로컬 및 원격 서버 간 파일 동기화 자동화

봉의일상 2025. 3. 2. 22:17

1. rsync란?

rsync는 파일 및 디렉터리를 로컬 및 원격 서버 간에 동기화하는 강력한 유틸리티입니다. SSH를 활용한 보안 연결이 가능하며, 증분 전송 방식으로 속도가 빠르고 효율적입니다.

2. rsync 기본 사용법

rsync 명령어의 기본적인 사용법은 다음과 같습니다.

rsync [옵션] 원본 경로 대상 경로

예제:

rsync -avz /local/path/ user@remote:/remote/path/
  • -a : 아카이브 모드(파일 속성 유지 및 하위 디렉터리 포함)
  • -v : 상세 출력
  • -z : 전송 데이터 압축

3. 로컬 디렉터리 간 동기화

같은 서버 내에서 파일을 동기화할 때 사용할 수 있습니다.

rsync -av /source/directory/ /destination/directory/

4. 원격 서버와의 동기화

4.1 로컬 → 원격 서버 동기화

rsync -avz /local/path/ user@remote:/remote/path/

4.2 원격 서버 → 로컬 동기화

rsync -avz user@remote:/remote/path/ /local/path/

4.3 SSH를 통한 보안 전송

기본적으로 rsync는 SSH를 사용하여 원격 서버에 연결합니다.

rsync -avz -e ssh /local/path/ user@remote:/remote/path/

5. 특정 파일 또는 디렉터리 제외하기

--exclude 옵션을 사용하여 특정 파일 또는 디렉터리를 제외할 수 있습니다.

rsync -avz --exclude 'node_modules' /local/path/ user@remote:/remote/path/

여러 개를 제외하려면:

rsync -avz --exclude={'node_modules','*.log'} /local/path/ user@remote:/remote/path/

6. 주기적인 동기화 자동화 (crontab 활용)

6.1 crontab 설정

주기적인 동기화를 위해 crontab을 활용할 수 있습니다.

crontab -e

아래와 같이 입력하면 매일 새벽 2시에 자동으로 동기화가 실행됩니다.

0 2 * * * rsync -avz /local/path/ user@remote:/remote/path/ >> /var/log/rsync.log 2>&1

7. SSH 키 기반 인증을 통한 비밀번호 없는 동기화

비밀번호 입력 없이 rsync를 실행하려면 SSH 키를 설정해야 합니다.

ssh-keygen -t rsa
ssh-copy-id user@remote

이후 rsync 명령어 실행 시 비밀번호 입력 없이 동작합니다.

8. 결론

rsync는 파일 동기화 및 백업을 자동화하는 데 매우 유용한 도구입니다. SSH 키 인증과 crontab을 함께 활용하면 원격 서버와의 파일 동기화를 간편하게 자동화할 수 있습니다.