rsync로 파일을 동기화하고 전송 대역폭 제한하기

목차

SSH를 통해 원격 서버의 파일을 가져오거나 보내는 절차입니다. 원노트의 /opt 동기화 예제를 기준으로 경로 끝의 슬래시, 로그 분리, 대역폭 제한을 정리했습니다. 아래 계정은 lieper이며 SSH 포트는 21887인 예시입니다.

복사 방향과 경로 확인

원격 경로를 앞에 쓰면 원격에서 로컬로 가져옵니다. /opt/처럼 끝에 슬래시를 붙이면 디렉터리의 내용물을 복사합니다. /opt처럼 쓰면 디렉터리 자체가 대상 아래에 생길 수 있습니다. 실행 전에 dry run으로 변경 목록을 확인합니다.

TERMINAL / CONFIG
mkdir -p /home/lieper/sync /home/lieper/opt-copy
rsync -avn -e 'ssh -p 21887' lieper@server.example.com:/opt/ /home/lieper/opt-copy/
rsync -av --progress -e 'ssh -p 21887' lieper@server.example.com:/opt/ /home/lieper/opt-copy/ >> /home/lieper/sync/opt.log 2>> /home/lieper/sync/opt-error.log

필요한 옵션만 선택

-a는 디렉터리 재귀 복사와 권한·시간·링크 등 보존 옵션을 묶습니다. 소유자·그룹·특수 파일을 모두 보존하려면 실행 계정의 권한과 대상 파일시스템도 맞아야 합니다. 복사 편의를 위해 root SSH 로그인을 새로 허용하지는 않습니다.
--delete는 원본에 없는 파일을 대상에서 삭제하므로 일반 복사와 구분합니다. 삭제 동기화가 필요한 경우에만 별도 dry run을 확인한 뒤 추가합니다. -z는 전송 중 압축으로, 이미 압축된 파일은 CPU 비용만 늘 수 있습니다.

전송 속도와 결과 확인

--bwlimit의 수치는 KiB/s 단위입니다. 네트워크의 Mbps와 단위가 다르므로 그대로 입력하지 않습니다. 다음은 약 80,000 KiB/s로 제한한 송신 예시입니다.

TERMINAL / CONFIG
rsync -av --bwlimit=80000 --progress -e 'ssh -p 21887' /home/lieper/backup.sql lieper@server.example.com:/home/lieper/backup.sql
echo $?

종료 코드가 0인지 확인하고 오류 로그를 읽습니다. 중요 파일은 전송 전후 체크섬도 비교합니다. 실행 중인 데이터베이스의 데이터 디렉터리는 파일 복사만으로 일관된 백업이 되지 않으므로 별도 백업 도구를 사용합니다.

리눅스 › 기본명령어
기본명령어 목록