데이터 마이그레이션 할 때 rsync 명령어를 주로 사용하는데, 이때 rsync란 어떤 개념인 지 자세히 알아보자.
- rsync란?
- rsync는 Remote Synchronization의 줄임말로 파일과 디렉토리를 동기화하기 위한 프로토콜이자 리눅스의 유틸리티 명령어다.
- rsync 명령어를 이용해 로컬에 있는 파일이나 디렉토리를 원격 호스트로 보내거나 원격에 있는 파일, 디렉토리를 로컬로 복사해 올 수 있다.
- 장점
- 원격 시스템으로부터 파일을 효율적으로 복사 및 동기화할 수 있다.
- link, device, 파일의 소유자와 그룹권한 등 파일의 부가정보까지 복사가 가능하다.
- 빠르다.
- rsync는 remote-update 프로토콜을 이용해서 차이가 있는 파일만 복사한다.
- 처음에는 모든파일 및 디렉토리를 복사 후, 이후부터는 출발지와 목적지 간의 다른부분 만을 복사하기 때문에 빠르고 효율적으로 작동한다.
- 데이터를 압축해서 송수신하기 때문에 적은 대역폭을 사용한다.
- 파일크기 또는 시간의 변화 등을 이용하여 동기화한다.
- 설치
- 대부분의 리눅스 배포판이나 OSX에는 기본 설치가 되어 있다.
- 하지만 일부 리눅스를 최소 설치 옵션으로 설치했다면 rsync가 포함되지 않았을 수 있다. 이 경우 아래처럼 yum이나 apt 등으로 설치해주면 된다.
$ sudo yum install rsync
또는
$ sudo apt-get install rsync
- 사용법
$ rsync [OPTIONS] [SOURCE] [TARGET]
- 예시
# 로컬 데이터를 로컬에 복사
$ rsync -avh /home/user/data /home/new_user/backup
# 로컬의 데이터를 리모트로 복사
$ rsync -avh /home/user/data remote_user@remotehost:/home/remote_user/backup
# ssh 포트가 다른 경우
$ rsync -avh -e "ssh -p 123" /home/user/data remote_user@remotehost:/home/remote_user/backup
# 리모트 데이터를 로컬로 가져옴
$ rsync -avh remote_user@remotehost:/home/remote_user/backup /home/user/data
- SOURCE와 TARGET 순으로 파일의 경로를 입력하면 된다.
- 만약 SOURCE 혹은 TARGET이 리모트에 있는 파일 경로라면, "[USER]@[HOST]:[PATH]" 형식으로 입력해주면된다.
이때, 콜론(:)은 빼먹지 않도록 유의해야한다.
- 옵션값
man 페이지에서 조회한 rsync 옵션값은 아주 많은데, 그중에서도 자주 사용하는 옵션값은 아래와 같다.
옵션 이름 | 설명 |
-v | 진행 상황을 상세하게 보여줌 |
-r | 지정한 디렉토리의 하위 디렉토리까지 재귀적으로 실행 |
-l | 소프트 링크 보존 |
-H | 하드 링크 보존 |
-p | 버전 속성 보존 |
-o | 소유 속성 보존(루트) |
-g | 그룹 속성 보존 |
-t | 타임스탬프 보존 |
-D | 디바이스 파일 보존(루트) |
-z | 데이터 압축 전송 |
-b | 낡은 파일은 ~가 붙음 |
-u | 추가된 파일만 전송, 새 파일은 갱신하지 않음 |
--existing | 추가된 파일은 전송하지 않고 갱신된 파일만 전송 |
--delete | 서버에 없는 파일은 클라이언트에서도 삭제 |
-a | 아카이브 모드. rlptgoD를 자동 지정 |
-c | 서버와 클라이언트의 파일 크기를 세밀히 체크 |
--stats | 결과를 보고 |
-e ssh(rsh) | 전송 암호화 |
Reference
https://hbase.tistory.com/318
'Programming > Linux' 카테고리의 다른 글
[Linux] /tmp와 /var/tmp의 차이 (2) | 2023.03.11 |
---|---|
[Linux] Nohup이란? (0) | 2023.03.10 |
[Linux] Crontab 이란? (0) | 2022.06.30 |
[Linux] at이란? (0) | 2022.06.30 |