티스토리 뷰
개요
rsync
는 원본과 대상 파일 또는 디렉토리를 동기화시켜주는 리눅스 유틸리티이다. cp와 다른 점은 원본과 대상의 관계를 정밀하게 분석, 비교하여 꼭 필요한 변경점만 동기화하여, I/O 소모를 최소화한다는 특징이 있다. rsync는 주로 로컬의 중요한 데이터를 주기적으로 원격지에 백업하는 용도로 많이 사용한다. 데몬으로 작동하기 보다는 단일 명령어로 실행되는 성격을 가진다. (데몬으로 작동하면서, 변경점을 바로 바로 반영하는 유틸리티로는lsyncd
가 존재한다.)
rsync 설치
- CentOS에서 설치 가능한 최신 버전의 rsync 다운로드 방법은 아래와 같다.
### CentOS 6 64-bit
$ yum install https://rpmfind.net/linux/dag/redhat/el6/en/x86_64/extras/RPMS/rsync-3.1.1-1.el6.rfx.x86_64.rpm
### CentOS 7 64-bit
$ yum install https://rpmfind.net/linux/centos/7.6.1810/os/x86_64/Packages/rsync-3.1.2-4.el7.x86_64.rpm
### rsync 버전 확인
$ rsync --help
rsync version 3.1.1 protocol version 31
rsync 사용법
$ nice -n19 ionice -c2 -n7 rsync -avn --delete --bwlimit=1024 /home/source/ /home/destination/; echo 3 > /proc/sys/vm/drop_caches
sending incremental file list
- rsync의
-a
옵션은 원본의 타임스탬프와 권한 정보를 그대로 유지한채 사본으로 복사해준다. (-t 옵션만 사용할 경우, 타임스탬프 정보만 유지한다.) - rsync의
-v
옵션은 복사 중에 발생하는 로그를 상세하게 출력해준다. - rsync의
-n
옵션은 실제 복사에 앞서 예행 연습을 해준다. 실제 물리적인 복사 행위 없이 예상되는 변경점을 파악할 수 있다. 실제 복사시에는 옵션에서 제거해야 한다. - rsync의
--delete
옵션은 원본에는 존재하지 않는 파일이 대상에 있을 경우 삭제해준다. - rsync의
--bwlimit
옵션은 파일 복사에 사용되는 I/O 최대 대역폭을 지정할 수 있다. KB 단위이다. (1,024는 초당 1MB 대역폭을 의미한다.) - ionice를 사용하면 대상 명령의 시스템 우선순위를 낮출 수 있다. 실제 운영 환경에서 사용할 경우 기존 서비스에 대한 영향을 최소화할 수 있어 추천한다. ionice의
-c[1-3]
옵션은 실행할 우선순위 정책을 의미한다. 대개 2를 추천한다. (1: real time, 2: best effort, 3: idle only) - ionice의
-n[0-7]
옵션은 실행할 명령의 CPU 우선순위를 의미한다. 값이 낮을수록 우선순위가 높아진다. 7로 설정하면 우선순위가 가장 낮아진다. - ionice를 다시 nice로 한번 더 랩핑하면 보다 확실하게 우선순위를 조정할 수 있다. nice의
-n[-20-19]
옵션은 앞서와 마찬가지로 CPU 우선순위를 의미하며 낮을수록 우선순위가 높아진다. 19로 설정하면 우선순위가 가장 낮아진다. - 마지막으로, echo 3 > /proc/sys/vm/drop_caches를 사용하면 rsync 실행 중에 캐시된 자원을 즉시 반납하여 메모리 사용량을 한 번에 줄일 수 있다. (원래 메모리 사용량은 rsync 사용 후 오랫동안 점진적으로 내려간다.)
원격지로부터 로컬 파일 동기화하기
- 단순히 로컬 내에서의 파일 동기화 뿐만 아니라 원격지로부터 로컬 파일을 동기화하는 것도 가능하다. [관련 링크]
$ rsync -chavzP --stats user@source_ip_address:/home/source/ /home/destination/
- 로컬에서 원격지로 파일 동기화시 SSH Key 연동이 되어 있지 않으면, 계정 비밀번호를 물어본다. 이를 자동화하려면 원격지에 SSH Key를 아래와 같이 복사하면 된다.
# SSH Key 생성
$ ssh-keygen
# 원격지로 생성한 SSH Key의 퍼블릭 키 전송
$ ssh-copy-id -i /root/.ssh/id_rsa {원격지 IP 주소}
참고 글
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자전거
- jstl
- CentOS
- graylog
- 알뜰폰
- Spring MVC 3
- 로드 바이크
- bootstrap
- Tomcat
- JavaScript
- Docker
- java
- kotlin
- 태그를 입력해 주세요.
- 로드바이크
- MySQL
- Eclipse
- JHipster
- jsp
- jpa
- maven
- 구동계
- chrome
- Kendo UI Web Grid
- node.js
- DynamoDB
- 평속
- Spring Boot
- spring
- Kendo UI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함