rsync를 이용한 파일 전송 및 동기화

rsync를 이용한 파일 전송 및 동기화

Examples#

rsync -aHAXh \
  -e "ssh -p 2022" \
  --numeric-ids --info=progress2 \
  --rsync-path="sudo rsync" \
  /source/ /backup/

rsync -aHAXh --numeric-ids --info=progress2 \
  --rsync-path="sudo rsync" \
  -e "ssh -p 2222" \
  heejun.yang@REMOTE_HOST:/superset/volumes/db_home16 \
  ~/_dev/db/

  rsync -aHAXh --numeric-ids --info=progress2 \
    heejun.yang@172.29.4.125:/home/heejun.yang/_dev/ /home/heejun.yang/_dev-old/

rsync with sudo#

sudo visudo

다음 내용을 추가

heejun-yang ALL=(root) NOPASSWD: /usr/bin/rsync

또는 sudo에 tty 할당 (비추천)

rsync -ah --info=progress2 \
  -e "ssh -t" \
  --rsync-path="sudo rsync" \
  --exclude 'tmp' \
  --exclude 'logs' \
  --exclude '*.log' \
  heejun-yang@tchub.lge.com:/app/outline/ ./outline/

Server간 파일 전송#

rsync 설치/실행/재실행#

$ sudo apt-get install rsync
$ sudo systemctl start rsync
$ sudo systemctl restart rsync

Server Side#

  • rsync 설정
    /etc/default/rsync

  • 개별 설정
    /etc/rsyncd.conf

    log file = /var/log/rsyncd.log
    
    [SVC_MANUAL_HTML]
    path = /home/heejun-yang/HTML/generates/
    comment = SVC Manual HTML Sync
    uid = root
    gid = root
    use chroot = no
    read only = yes
    hosts allow = 10.182.181.4
    max connections = 10
    timeout = 30

Client Side#

  • sync
    rsync [option] [서버 IP]::[rsync 서비스] [저장경로]
    rsync [option] –bwlimit=[대역폭] [서버 IP]::[rsync 서비스] [저장경로]
    rsync [option] –exclude-from=’[전송 제외 항목]’ [서버 IP]::[rsync 서비스] [저장경로]
$ rsync -avzurt 10.157.57.58::SVC_MANUAL_HTML/*.zip /if/html
$ rsync -avzurt --bwlimit=1000 192.168.10.5::web /backup/web
$ rsync -avzurt --exclude-from='/backup/exclude_txt' 192.168.10.5::web /backup/web

옵션 요약표

옵션 풀네임 설명
-a archive 원본 속성·구조 최대한 보존, 재귀적 복사 포함
-v verbose 자세한 출력
-z compress 네트워크 전송 시 데이터 압축
-u update 대상에 새 버전 있으면 복사 안 하고 건너뜀
-r recursive 하위 폴더까지 재귀적 복사
-t times 수정시간/타임스탬프 원본 그대로 복사

참고

  • 보통 **-avz** 조합을 가장 많이 쓰며,
  • **-a**에 **-r**, **-t**는 이미 포함되어 있으므로 중첩 표기 필요 없음.

Trouble Shooting#

  • rsync daemon 확인
$ sudo systemctl status rsync
● rsync.service - fast remote file copy program daemon
     Loaded: loaded (/lib/systemd/system/rsync.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2025-03-25 10:58:26 KST; 3min 37s ago
       Docs: man:rsync(1)
             man:rsyncd.conf(5)
   Main PID: 763206 (rsync)
      Tasks: 1 (limit: 38417)
     Memory: 836.0K
     CGroup: /system.slice/rsync.service
             └─763206 /usr/bin/rsync --daemon --no-detach

Mar 25 10:58:26 tecomm.ubuntu systemd[1]: Started fast remote file copy program daemon.
  • @ERROR: chdir failed 일때
    rsyncd.conf 설정 중 path가 실제로 있는 path인지 확인해 볼 것