본문 바로가기
IT/OS

리눅스 rsync명령어 (Remote Sync) 설명

by 청바지 입고 개발자 2023. 9. 27.
반응형

 

rsync명령어

 
리눅스나 유닉스에서 파일복사하실 때 어떤 방법을 쓰시나요 ?
rsync, rcopy, cp 등 여러가지 사용 가능한 명령어들이 있습니다.
오늘은 그 중 가장 강력하다고 생각되는 rsync명령어에 대해서 알아보겠습니다.

rsync (Remote Sync)란 ?

 
파일 및 디렉토리를 동기화하고 복사하는 데 사용되는 명령줄 도구입니다.
rsync는 원격 및 로컬 시스템 간에 파일을 전송하고 동기화하는 데 자주 사용됩니다.
 

일반적으로 언제 사용할까요 ?

저는 대량의 파일을 A에서 B 로 복제 할 때 사용합니다.
스토리지에 파일 시스템 복제를 위해 A공간 데이터를
Full 백업 수행 후, B공간의  스토리지에 Full 백업을 복구 진행이 된다면
A공간의 백업 시점 이후  증분에 대해서 복제할 때 사용하고 있습니다.
 
백업을 신속하게 한다고 하더라도 백업 데이터를 B공간으로늬 복구는  몇일이 걸릴 수 있습니다.

그 사이 A의 파일 시스템이 운영중이라면 계속적으로 증분 데이터가 쌓이게 되어 A 와 B 의 파일 sync가 맞지 않게 됩니다.

백업데이터 복구 후 증분 데이터를 A에서 B로  반영할 때 바로 rsync명령어를 사용하게 됩니다. 

rsync 복제 이미지

 

다음은 rsync 명령어의 기본적인 사용 방법 및 주요 옵션에 대한 개요입니다.

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

[원본]: 복사하려는 파일 또는 디렉토리의 경로입니다.
[대상]: 복사된 파일 또는 디렉토리를 저장할 위치의 경로입니다.

rsync 주요 옵션 설명 

일반적으로는 rsync avr옵션을 자주 사용 합니다.
rsync -a 또는 --archive: 아카이브 모드로 작업하며, 파일 속성 (권한, 소유자, 그룹, 시간 등)을 보존합니다. 또한 재귀적으로 디렉토리를 복사합니다.
rsync -v 또는 --verbose: 자세한 출력을 표시하여 작업 진행 상황을 보여줍니다.
rsync -z 또는 --compress: 데이터 압축을 사용하여 전송 효율성을 높입니다.
rsync -h 또는 --human-readable: 파일 크기를 보기 쉬운 형식으로 표시합니다.
rsync -r 또는 --recursive: 디렉토리와 그 내용을 재귀적으로 복사합니다.
 
rsync -n 또는 --dry-run: 실제로 복사하지 않고 작업 결과를 미리 보여줍니다.
rsync -e 또는 --rsh: 원격 호스트에 연결할 때 사용할 원격 셸을 지정합니다. 예를 들어 SSH 연결을 사용하려면 -e ssh와 같이 지정합니다.--delete: 원본에서 삭제된 파일을 대상에서도 삭제합니다.
rsync -u 또는 --update: 대상 디렉토리에서 원본보다 최신 파일만 복사합니다.

압축 옵션(-a) 사용 시 주의할 점 

압축 옵션을 사용한다고 해서 반드시 파일 복제 처리 속도가 빨라진다고 할 순 없습니다. 
- cpu사용량에 따라 오히려 압축 옵션이 더 성능에 악영향을 끼칠 수가 있음
- rsync의 from to 가 같은 스토리지에 있는지 아니면 원격지에 있는지에 따라서 오히려 성능이 저하될 수 있음 
 
따라서 간단하게  특정 소량의 디렉토리에 대해서 사전에  rsync 명령을 수행해 본 후 압축 옵션을 쓸지말지 결정해야 될 것 같습니다. 전 보통 -a옵션을 사용하지 않습니다.(오히려 성능이 않좋아지더라고요) 
 

 

 


아카이브 모드를 나타내는 -a 옵션은 rsync 명령어에서 모드와 관련된 옵션들을 모두 활성화하는 옵션입니다. 
 -a 옵션을 사용하면 모드 관련 옵션들을 개별적으로 지정할 필요가 없습니다.
아카이브 모드는  아래와  같은 내용을 자동으로 포함합니다:- 파일 권한- 소유자 및 그룹 정보- 파일 생성일자 및 수정일자- 심볼릭 링크- 디렉토리 및 파일을 재귀적으로 복사(-r 또는 --recursive)

따라서 -a 옵션을 사용하면 모드 설정과 관련된 별도의 옵션(--chmod, --chown, --times 등)을 작성할 필요가 없습니다.
-a를 사용하여 손쉽게 모든 필요한 보존 옵션을 활성화할 수 있습니다.

 

실무에서 가장 많이 사용하는 예

실무에서는 rsync -avz -r /원본/  /대상/  와 같은 옵션을 사용하는 것이 일반적인 처리 방법이라고 할 수 있습니다. 
아래 명령어도 일반적으로 많이 사용되는 옵션 조합입니다.

-a: 원본 경로의 파일 및 디렉토리 구조를 그대로 대상 경로에 복제합니다.
-v: 복제 작업의 진행 상황을 출력합니다.
-z: 압축을 하여 전송합니다. 네트워크 대역폭을 절약하고 전송 속도를 높일 수 있습니다.
-r: 하위 디렉토리까지 모두 복제합니다.
예를 들어, 다음과 같이 명령어를 입력하면, /home/user/test 폴더의 모든 파일과 하위 폴더를 /backup/test 폴더로 복제하면서 압축하여 전송하고, 진행 상황을 출력합니다.
 

rsync 샘플
rsync 처리 결과

 
결과에서 building file list 는 rsync가 /home/user/test 폴더의 파일과 하위 폴더를 검사하고 있는 것을 의미합니다. 이후에는 검사한 파일과 폴더가 출력됩니다.
sent 72 bytes received 28 bytes는 전송된 데이터와 받은 데이터의 크기를 나타냅니다. total size is 0은 /home/user/test 폴더의 총 크기가 0이라는 것을 의미합니다. speedup is 0.00은 압축을 하지 않고 전송했을 때와 비교한 속도 향상률을 나타냅니다.
 

 

 

실전 사용 예 

2023년 10월 10일 이전 데이터만 복사하고  싶은 요건이 있을 때 
find 명령어로 우선 복제 목록을 추리고, 다음 명령어의 파라미터로 넘겨줄 수 있습니다.

find /nas_from/ -type f  ! -newermt 2023-10-11 -exec rsync -avr {} /nas_to/ \;


! -newermt 2023-10-11 옵션은 파일의 수정일자가 2023년 10월 11일 이후인 파일을 제외합니다.
 
반대로 -newermt 2023-10-10 옵션은 파일의 수정일자가 2023년 10월 10일 이후인 파일을 선택합니다.
-exec 옵션은 rsync 명령어를 호출하고 검색된 파일을 복사합니다.
 
 

rsync와 rcopy명령어 차이

rsync와 rcp (또는 rcopy)은 파일 및 디렉토리를 복사하고 동기화하는 데 사용되는 명령어 및 유틸리티입니다.  
두 명령어 모두 자주 사용되는 명령어이지만 약간의 차이가 있습니다
 
rsync는 더 많은 기능을 제공하며, 변경된 파일만 복사하는 기능 등을 통해 더욱 효율적인 파일 동기화를 가능하게 합니다. 반면 rcp 및 rcopy는 간단한 파일 복사를 위한 명령어로 사용됩니다. rsync는 마치 형상관리의 동기화 기능과 유사하다고 보시면 될 것 같습니다.
 
아래에 자주 사용되는 rsync명령어를 다운 받으실 수 있습니다.

자주사용되는명령어.txt
0.00MB

오늘은 백업이나 폴더 복사시 자주 사용되는 rsync, rcopy명령어에 대해서 알아 보았습니다. 리눅스에서 파일복사 할 때 업무에 잘 활용하시기 바랍니다. 
 
 

반응형

댓글