맨위로가기

Rsync

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Rsync는 1996년에 처음 발표된 파일 동기화 유틸리티로, 앤드루 트리젤과 폴 매커러스가 개발했다. 유연성, 속도, 스크립트 작성 능력으로 인해 리눅스 표준 유틸리티가 되었으며, 윈도우, macOS 등 다양한 운영 체제로 이식되었다. Rsync는 파일의 변경된 부분만 전송하는 알고리즘을 사용하여 효율적인 파일 동기화를 가능하게 하며, 롤링 체크섬과 MD5 해시를 활용하여 데이터 전송량을 최소화한다. rsync는 파일 백업, 미러링 등 다양한 활용 사례를 가지며, rdiff, rdiff-backup, Duplicity, Rclone 등 여러 파생 기술과 응용 프로그램의 기반이 된다.

더 읽어볼만한 페이지

  • 네트워크 파일 전송 프로토콜 - 백그라운드 인텔리전트 전송 서비스
    백그라운드 인텔리전트 전송 서비스(BITS)는 유휴 네트워크 대역폭을 활용하여 파일을 비동기적으로 전송하는 윈도우 서비스로, 네트워크 사용량이 적을 때 백그라운드에서 파일을 전송하며 중단된 부분부터 재개할 수 있고, 소프트웨어 업데이트 및 애플리케이션 배포 등에 활용되며, 작업 큐를 통해 전송을 관리하고, 윈도우 비스타 이후 운영체제에서는 `bitsadmin.exe` 명령 줄 유틸리티를 통해 관리가 가능하다.
  • 네트워크 파일 전송 프로토콜 - SSH 파일 전송 프로토콜
    SSH 파일 전송 프로토콜(SFTP)은 SSH를 통해 안전한 파일 전송 및 관리를 제공하며, SCP보다 플랫폼 독립적이고 정부 및 공공기관에서 사용이 권장되는 네트워크 프로토콜이다.
  • 자유 백업 소프트웨어 - 클론질라
    클론질라는 디스크 복제 및 배포를 위한 오픈 소스 소프트웨어로, 파티션 및 디스크 복제, 이미지 생성, 복원 기능을 제공하며 다양한 파일 시스템을 지원한다.
  • 자유 백업 소프트웨어 - Tar (파일 포맷)
    tar는 여러 파일들을 묶어 저장하는 파일 아카이브 형식으로, 유닉스 버전 7에 처음 도입되어 POSIX 표준에 따라 널리 사용되며 소프트웨어 배포 및 백업에 활용된다.
  • 데이터 동기화 - 아이클라우드
    아이클라우드는 애플의 클라우드 컴퓨팅 서비스로, 다양한 데이터를 저장 및 동기화하며 여러 기기에서 접근 가능하고, 추가 기능과 저장 공간 확장을 제공하지만 보안 및 개인 정보 보호에 대한 논란도 있다.
  • 데이터 동기화 - 원드라이브
    원드라이브는 마이크로소프트에서 제공하는 클라우드 기반 파일 저장 및 공유 서비스로, 다양한 운영체제와 장치에서 파일 동기화 및 공유 기능을 제공하며 개인 및 기업 사용자 모두를 지원하고, 다른 마이크로소프트 서비스와의 연동을 지원하지만 저장 공간 축소, 개인 정보 보호, 보안 취약점 등 논란과 비판에 직면하기도 했다.
Rsync - [IT 관련 정보]에 관한 문서
개요
이름rsync
종류데이터 전송, 차분 백업
개발자앤드루 트리겔, Paul Mackerras, Wayne Davison
발표일1996년 6월 19일
최신 버전3.2.4
최신 버전 발표일2022년 4월 15일
프로그래밍 언어C
지원 운영체제크로스 플랫폼
라이선스GNU 일반 공중 사용 허가서
웹사이트rsync 공식 웹사이트
설명
특징파일 동기화 프로토콜 및 소프트웨어

2. 역사

(내용 없음 - 하위 섹션에서 모든 내용을 다루고 있음)

2. 1. 개발 배경

앤드루 트리젤 (Andrew Tridgell)과 폴 매커러스(Paul Mackerras)가 최초의 rsync를 개발하여 1996년 6월 19일에 처음 발표했다.[1][42] rsync는 기능과 호출 방식 면에서 1983년 랄프 캠벨(Ralph Campbell)이 개발하여 4.3BSD의 일부로 출시된 '''rdist''' ('rdist -c')와 유사하다.[15] 앤드루 트리젤은 1999년 철학박사 학위 논문의 3장에서 5장까지 rsync의 설계, 구현 및 성능에 대해 논의했다.[16]

2. 2. 현재

2023년 기준으로 웨인 데이비슨(Wayne Davison)이 유지보수를 담당하고 있다.[17]

rsync는 유연성, 속도, 스크립트 작성 능력 덕분에 표준 리눅스 유틸리티가 되었으며, 대부분의 인기 있는 리눅스 배포판에 포함되어 있다. Cygwin, Grsync, 또는 SFU[18]를 통해 Windows, FreeBSD,[19] NetBSD,[20] OpenBSD,[21] 및 macOS로 이식되었다.

3. 알고리즘

rsync 유틸리티는 오스트레일리아의 컴퓨터 프로그래머 앤드류 트리젤이 개발한 알고리즘을 사용한다. 이 알고리즘은 원격지에 파일을 전송할 때, 이미 목적지 컴퓨터에 비슷한 파일이 존재한다면 전체 파일을 다시 보내는 대신 변경된 부분만 효율적으로 전송하기 위해 고안되었다.[29]

핵심 원리는 파일을 여러 조각(청크)으로 나누고, 각 조각의 체크섬을 비교하는 것이다. 수신 측은 파일 조각들의 체크섬 정보(롤링 해시와 MD4 또는 MD5 해시 함수 값)를 송신 측에 전달한다.[30] 송신 측은 이 정보를 바탕으로 두 파일 간의 동일한 조각을 식별한다. 특히 롤링 해시 기법은 파일 내용의 일부가 변경되거나 위치가 바뀌어도 동일한 부분을 효율적으로 찾아낼 수 있게 한다.[31]

송신 측은 동일한 조각은 제외하고 변경되거나 새로운 조각의 내용과 재조합 정보만을 전송하여, 수신 측 파일이 송신 측과 동일하게 되도록 동기화한다. 이 방식은 두 파일 간 공통 부분이 많을수록 전송 데이터 양을 크게 줄여 효율적이다.

이러한 차등 동기화 방식은 일반적인 데이터 압축과는 구별된다. Rsync는 핵심 알고리즘 외에도 전송 데이터 압축(zlib, Zstandard, LZ4 등) 및 암호화(ssh, stunnel 등)와 같은 추가 기능을 지원하여 데이터 전송의 효율성과 보안성을 높인다.

3. 1. 기본 원리

rsync 유틸리티는 수신 컴퓨터에 이미 비슷한 파일이 있을 때 통신 링크를 통해 구조(예: 파일)를 효율적으로 전송하기 위해 오스트레일리아의 컴퓨터 프로그래머 앤드류 트리젤이 발명한 알고리즘을 사용한다.[29]

작동 원리는 다음과 같다.

1. 수신 측: 가지고 있는 파일의 복사본을 고정된 크기(''S'')의 여러 조각(청크)으로 중복되지 않게 나눈다. 각 청크에 대해 두 가지 체크섬을 계산하는데, 하나는 MD5 해시 함수이고 다른 하나는 계산이 더 간단한 '롤링 체크섬'이다.[30] 계산된 체크섬 목록을 송신 측에 보낸다.

2. 송신 측: 자신이 가진 파일 버전을 수신 측과 동일한 청크 크기(''S'')로 나누되, 파일의 모든 위치에서 시작하는 조각에 대해 롤링 체크섬을 계산한다. 즉, 수신 측은 정해진 위치(청크 크기의 정수 배수)에서만 체크섬을 계산하지만, 송신 측은 모든 가능한 위치(예: 1번 바이트부터 ''S''개, 2번 바이트부터 ''S''개, ...)에서 롤링 체크섬을 계산한다.

  • 롤링 체크섬은 효율적으로 계산될 수 있다. 예를 들어, 바이트 ''n''부터 ''n''+''S''-1까지의 롤링 체크섬 ''R''을 알면, ''n''+1부터 ''n''+''S''까지의 롤링 체크섬은 ''R''과 ''n''번째 바이트, ''n''+''S''번째 바이트 값만으로 빠르게 계산할 수 있다. 전체 내용을 다시 읽을 필요가 없다. rsync에서 사용하는 롤링 체크섬은 마크 애들러의 adler-32 체크섬에 기반하며, 이는 플레처 체크섬에 기반하고 zlib에서도 사용된다.

3. 비교 및 전송: 송신 측은 계산한 롤링 체크섬과 수신 측이 보내온 롤링 체크섬 목록을 비교한다.

  • 만약 일치하는 롤링 체크섬을 찾으면, 해당 조각이 동일할 가능성이 높다고 판단한다. 이때 더 정확하고 계산 비용이 높은 MD5 해시값을 계산하여 수신 측의 MD5 값과 비교하여 정말 동일한지 최종 확인한다.[31]
  • 두 체크섬이 모두 일치하면, 해당 조각의 내용은 전송하지 않고 수신자 파일의 어느 위치에 해당하는지만 알려준다. 송신자의 섹션은 수신자의 청크와 동일한 시작 주소에 있지 않을 수 있으며, 이를 통해 파일 중간에 내용이 삽입되거나 삭제되어 조각의 위치가 달라진 경우에도 효율적으로 처리할 수 있다.[31]
  • 일치하는 조각을 찾지 못하면(체크섬 불일치), 해당 파일 부분은 변경된 것으로 간주하고 수신 측에 직접 전송한다. 이때 기존 블록과 어떻게 합쳐야 하는지에 대한 정보(병합 절차)도 함께 보내 파일 내용이 완전히 같아지도록 한다.


이 과정을 통해 두 파일 버전 간에 공통된 부분이 많을수록 동기화를 위해 전송해야 하는 실제 데이터 양은 크게 줄어든다. 이는 일반적인 데이터 압축 방식과는 다른 접근이다. 일반 압축은 원본 파일이 비슷하더라도 압축된 결과는 매우 다를 수 있어 전체 파일을 다시 전송해야 하는 경우가 많다. 다만, gzip과 같은 일부 압축 도구는 압축되지 않은 파일의 로컬 변경 사항이 압축된 파일에서도 로컬 변경 사항만 발생하도록 하여, 압축 파일도 rsync로 효율적으로 처리할 수 있도록 하는 특별한 "rsyncable" 모드를 제공하기도 한다.

또한 rsync는 데이터 전송 및 백업에 유용한 추가 기능을 지원한다. 예를 들어, Zstandard, LZ4, zlib를 사용하여 블록 단위로 데이터를 압축하거나 압축 해제할 수 있으며, ssh나 stunnel 같은 프로토콜을 통해 암호화된 보안 전송도 가능하다.

3. 2. 롤링 체크섬

rsync 알고리즘은 수신 측 컴퓨터에 파일의 유사하지만 동일하지 않은 버전이 이미 있을 때, 파일을 효율적으로 전송하기 위해 사용된다.[29] 이 과정에서 롤링 해시(rolling hash) 또는 롤링 체크섬이라는 기술이 핵심적인 역할을 한다.

수신 측은 먼저 가지고 있는 파일을 고정된 길이 S의 덩어리(청크)로 나누고, 각 청크에 대해 두 종류의 체크섬을 계산한다. 하나는 계산이 빠르지만 상대적으로 약한 '롤링 체크섬'이고, 다른 하나는 MD4 해시 함수를 이용한 강력한 체크섬이다.[30] 계산된 체크섬 값들은 전송 측으로 보내진다.

전송 측은 자신이 가진 파일 버전에 대해, 모든 가능한 위치에서 시작하는 길이 S의 데이터 조각마다 롤링 체크섬을 계산한다. 롤링 체크섬의 특징 덕분에 이 계산은 매우 효율적으로 수행될 수 있다. 예를 들어, 바이트 `n`부터 `n+S-1`까지의 롤링 체크섬 `R`을 이미 알고 있다면, 다음 위치인 바이트 `n+1`부터 `n+S`까지의 롤링 체크섬은 이전 값 `R`과 양 끝의 바이트 값(`n`번째 바이트와 `n+S`번째 바이트)만을 이용하여 빠르게 계산할 수 있다. 모든 바이트를 다시 읽을 필요가 없는 것이다.

rsync에서 사용되는 이 롤링 체크섬은 마크 애들러(Mark Adler)가 개발한 adler-32 체크섬 알고리즘에 기반한다. adler-32는 플레처의 체크섬 알고리즘을 개선한 것이며, 널리 사용되는 데이터 압축 라이브러리인 zlib에서도 사용되고 있다.

전송 측은 계산한 롤링 체크섬들을 수신 측이 보내온 롤링 체크섬 목록과 비교한다. 만약 일치하는 롤링 체크섬을 찾으면, 해당 데이터 조각이 수신 측에도 존재할 가능성이 높다고 판단한다. 이때 더 정확한 확인을 위해 해당 조각의 MD4 체크섬을 계산하여 수신 측이 보낸 MD4 값과 비교한다.[31] 두 체크섬이 모두 일치하면 해당 데이터 조각은 동일한 것으로 간주하고 전송하지 않으며, 대신 수신 측 파일의 어느 위치에 이 조각을 사용해야 하는지에 대한 정보만 보낸다. 일치하지 않는 데이터 조각들만 실제 내용과 함께 전송된다.

이러한 롤링 체크섬 방식 덕분에 파일 중간에 내용이 삽입되거나 삭제되어 데이터의 위치가 밀려난 경우에도 변경되지 않은 부분들을 효과적으로 찾아내어, 전송해야 할 데이터 양을 크게 줄일 수 있다.

3. 3. 추가 기능

Rsync는 핵심적인 동기화 알고리즘 외에도 데이터 전송이나 백업에 유용한 다른 주요 기능들을 지원한다. 대표적으로 Zstandard, LZ4, zlib와 같은 알고리즘을 사용하여 데이터를 블록 단위로 압축하거나 압축 해제하는 기능이 있다. 또한 ssh나 stunnel 같은 프로토콜을 지원하여 전송되는 데이터를 암호화할 수 있어 안전한 데이터 전송이 가능하다.

4. 활용

`rsync`는 다양한 환경에서 파일 동기화, 백업, 미러링 등의 목적으로 널리 활용되는 도구이다. 로컬 시스템 내부는 물론, 로컬 시스템과 원격 시스템 간에 파일을 효율적으로 전송하고 최신 상태로 유지하는 데 유용하다. 초기에는 주로 유닉스 시스템 환경에서 시스템 간 데이터를 동기화하거나 백업하는 데 사용되었다.[22]

4. 1. 일반적인 사용법

cp, rcp, scp 명령어와 유사하게, `rsync`는 원본(Source)과 대상(Destination)을 지정해야 한다. 이때 원본과 대상 중 적어도 하나는 로컬 시스템에 있어야 한다.[22]

일반적인 사용 구문은 다음과 같다.



rsync [OPTION] … SRC … [USER@]HOST:DEST

rsync [OPTION] … [USER@]HOST:SRC [DEST]



여기서 `SRC`는 복사할 파일 또는 디렉토리(여러 개일 수도 있음)를 의미하고, `DEST`는 파일이나 디렉토리가 복사될 위치를 나타낸다. 대괄호 `[]` 안의 내용은 선택적으로 사용할 수 있는 매개변수이다.

`rsync`는 `rsync` 프로토콜이나 ssh를 통해 표준 유닉스 계정을 사용하여 유닉스 클라이언트와 중앙 유닉스 서버 간의 파일 동기화에 사용될 수 있다. 예를 들어, 데스크톱 환경에서는 외부 하드 드라이브에 있는 백업 복사본과 파일을 효율적으로 동기화하는 데 활용할 수 있다.

또한, cron과 같은 스케줄링 도구와 함께 사용하면 여러 호스트와 중앙 서버 간에 미러링이나 백업을 자동화하고 암호화하여 수행할 수 있다. 초기에는 유닉스 시스템 중 하나를 서버로 설정하고 다른 시스템과 파일을 동기화하는 방식으로 주로 사용되었다.

4. 2. 주요 활용 사례

'''cp''', '''rcp''' 및 '''scp'''와 유사하게, '''rsync'''는 다양한 환경에서 파일 동기화, 백업, 미러링 등의 목적으로 널리 활용된다. 초기에는 유닉스(UNIX) 시스템 간의 미러링이나 백업을 위해 주로 사용되었으며, 한 시스템을 서버로 두고 다른 시스템과 데이터를 주고받는 방식이었다.[22] 크론과 같은 스케줄링 도구와 함께 사용하면, 여러 시스템 간의 자동화되고 암호화된 동시 미러링 작업도 가능하다.

주요 활용 사례는 다음과 같다.

  • '''시스템 간 파일 동기화 및 백업:''' rsync는 ssh 프로토콜과 표준 유닉스 계정을 사용하여 유닉스 또는 리눅스 클라이언트와 중앙 서버 간의 파일을 효율적으로 동기화할 수 있다. 데스크톱 환경에서도 외부 하드 드라이브 등에 백업 복사본을 만들거나 파일을 동기화하는 데 유용하게 사용된다.

  • '''웹사이트 및 소프트웨어 저장소 미러링:''' 여러 오픈 소스 프로젝트나 기관에서 공식 미러 사이트를 운영하는 데 rsync를 사용한다.
  • 프리BSD 프로젝트의 공식 미러링 명령어 예시:[23]



rsync -avz --delete ftp4.de.FreeBSD.org::FreeBSD/ /pub/FreeBSD/




rsync -avz --delete --safe-links rsync.apache.org::apache-dist /path/to/mirror


  • PuTTY 웹사이트를 로컬 디렉토리로 미러링하는 예시:[25]



rsync -auH rsync://rsync.chiark.greenend.org.uk/ftp/users/sgtatham/putty-website-mirror/ .


  • '''Time Machine과 유사한 백업 시스템 구축:''' 하드 링크를 활용하여 변경된 파일만 새로 저장하고 변경되지 않은 파일은 이전 백업의 링크를 사용하는 방식으로, 저장 공간을 절약하면서 스냅샷 형태의 백업을 구현할 수 있다.[26]



# 현재 날짜와 시간으로 백업 디렉토리 이름 생성 (콜론 ':' 대신 하이픈 '-' 사용)

date=$(date "+%FT%H-%M-%S")

# 이전 백업(current)을 기준으로 변경된 파일만 새 백업 디렉토리(back-$date)에 복사하고, 나머지는 하드 링크 생성

rsync -aP --link-dest=$HOME/Backups/current /path/to/important_files $HOME/Backups/back-$date

# 가장 최신 백업을 'current' 심볼릭 링크로 지정

ln -nfs $HOME/Backups/back-$date $HOME/Backups/current


  • '''시스템 전체 백업:''' 시스템의 루트 디렉토리(`/`) 전체를 백업할 수 있다. 이때, 불필요하거나 백업 시 문제를 일으킬 수 있는 특정 시스템 디렉토리(예: `/dev`, `/proc`, `/sys`, `/tmp` 등)는 `--exclude` 옵션을 사용하여 제외하는 것이 일반적이다.[27]



rsync -avAXHS --progress --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /path/to/backup/folder


  • '''디렉토리 내용 빠른 삭제:''' 비어 있는 디렉토리를 원본으로 지정하고 삭제하려는 디렉토리를 대상으로 지정한 뒤 `--delete` 옵션을 사용하면, 대상 디렉토리의 모든 파일과 하위 디렉토리를 매우 빠르게 삭제할 수 있다.



# 비어 있는 디렉토리 생성 (예: /path/to/empty/dir)

# rsync를 사용하여 /path/to/dir/to/empty 디렉토리의 내용을 삭제 (빈 디렉토리와 동기화)

rsync -a --delete /path/to/empty/dir/ /path/to/dir/to/empty/


5. 파생 기술

rsync 알고리즘을 기반으로 하거나 여기서 영감을 받아 개발된 다양한 파생 기술 및 유틸리티가 존재한다.


  • '''rdiff''': 두 파일 간의 차이점을 나타내는 델타 파일(차분 파일)을 생성하는 유틸리티이다. diff와 유사하지만 다른 델타 형식을 사용하며 이진 파일에도 효과적이다.[32]
  • '''rdiff-backup''': `rdiff`를 이용하여 파일 및 디렉터리의 백업 미러를 로컬 또는 원격으로 유지 관리하는 스크립트이다. 변경된 부분만 저장하여 특정 시점으로 복원이 가능하다.[32]
  • '''librsync''': rsync 알고리즘을 독립적으로 구현한 라이브러리이다. rsync 네트워크 프로토콜이나 코드를 공유하지 않으며, Dropbox, `rdiff-backup`, duplicity 등 여러 유틸리티에서 사용된다.[33]
  • '''acrosync''': rsync 네트워크 프로토콜(버전 29 또는 30)과 호환되는 독립적인 라이브러리 및 이를 활용한 상용 소프트웨어이다.[34][35]
  • '''duplicity''': `librsync`를 활용하여 증분 백업을 수행하는 파이썬 기반 백업 소프트웨어이다. GPG를 이용한 암호화 기능을 제공한다.[33]
  • '''zsync''': 파일 버전당 다수의 다운로드가 발생하는 경우에 최적화된 rsync 유사 도구이다. 주로 리눅스 배포판ISO 이미지 배포 등에 사용되며, HTTP 프로토콜과 `.zsync` 파일을 이용해 네트워크 효율성을 높인다.[38]
  • '''Rclone''': 클라우드 스토리지 및 고지연 스토리지 환경에 특화된 rsync 유사 오픈 소스 도구이다. 다양한 클라우드 제공자를 지원하지만, 부분 파일 동기화를 위한 롤링 체크섬 기능은 지원하지 않는다.[39][40]

5. 1. rdiff

'''rdiff''' 유틸리티는 rsync 알고리즘을 사용하여 파일 A와 파일 B 간의 차이점을 나타내는 델타 파일(차분 파일)을 생성한다. 이는 유닉스 유틸리티 diff와 유사한 기능을 수행하지만, 사용하는 델타 형식은 다르다.[32] 생성된 델타 파일은 파일 A에 적용하여 파일 B로 변환하는 데 사용될 수 있으며, 이는 패치 유틸리티의 작동 방식과 비슷하다. diff와는 달리, rdiff는 이진 파일에도 효과적으로 적용될 수 있다는 장점이 있다.

rdiff의 델타 파일 생성 과정은 두 단계로 이루어진다. 먼저, 원본 파일(파일 A)로부터 비교적 작은 크기의 '시그니처 파일'을 생성한다. 그 다음, 이 시그니처 파일과 대상 파일(파일 B)을 비교하여 최종적인 델타 파일을 만들어낸다.

rdiff 기술을 활용하는 대표적인 예로 '''rdiff-backup''' 스크립트가 있다. 이 스크립트는 파일이나 디렉터리의 백업 미러를 로컬 시스템이나 네트워크를 통해 다른 서버에 원격으로 유지 관리하는 데 사용된다. rdiff-backup은 백업 데이터와 함께 rdiff 델타 파일들을 점진적으로 저장하며, 이를 통해 사용자는 과거의 특정 시점으로 데이터를 복원할 수 있다.[32]

rdiff에서 사용되는 핵심 라이브러리는 '''librsync'''이다. 이는 rsync 알고리즘을 독립적으로 구현한 것으로, rsync 네트워크 프로토콜을 사용하지 않으며 rsync 애플리케이션과 코드를 공유하지 않는다.[33] librsync는 Dropbox, rdiff-backup, duplicity 등 다양한 유틸리티에서 활용되고 있다.[33]

rdiff-backup에서 파생된 것으로 알려진 '''duplicity'''는 파이썬으로 작성된 백업 소프트웨어이다. 이 소프트웨어는 librsync를 활용하여 증분 백업을 수행한다. 이전 파일 버전의 시그니처를 기반으로 델타 데이터를 생성하고, 이를 gpg를 사용하여 암호화한 뒤 로컬 파일 시스템, sftp, 아마존 S3와 같은 다양한 저장소 백엔드에 저장한다. 성능 향상을 위해 로컬에 백업 체인 시그니처를 캐시하지만, 필요한 경우 백엔드에서 다시 다운로드할 수도 있다.

5. 2. rdiff-backup

`rdiff-backup`은 파일 또는 디렉터리의 백업 미러를 로컬 또는 네트워크를 통해 다른 서버로 원격으로 유지 관리하는 스크립트이다. 이는 `rdiff` 유틸리티를 기반으로 하는데, `rdiff`는 rsync 알고리즘을 사용하여 두 파일 간의 차이를 나타내는 델타 파일을 생성하는 도구이다(diff 유틸리티와 유사하지만 델타 형식은 다르다).

`rdiff-backup`은 백업을 진행하면서 변경된 부분만을 `rdiff` 델타 파일 형태로 저장한다. 이 델타 파일들을 이용하여 사용자는 원하는 특정 시점의 백업 상태로 데이터를 복구할 수 있다.[32]

`rdiff-backup`은 `rdiff`에서 사용하는 `librsync` 라이브러리를 활용한다. `librsync`는 rsync 알고리즘을 독립적으로 구현한 라이브러리로, Dropbox, duplicity 등 다른 여러 유틸리티에서도 사용되고 있다.[33] 또한, `rdiff-backup`에서 파생된 유틸리티로 Duplicity가 있다.

5. 3. Duplicity

'''Duplicity'''는 파이썬으로 작성된 백업 소프트웨어로, rdiff-backup에서 파생되었다. librsync 라이브러리를 활용하여 증분 백업을 수행하며[33], GPG를 사용하여 데이터를 암호화한다. 로컬 파일 시스템, sftp, 아마존 S3 등 다양한 백엔드 서비스를 지원한다.

Duplicity는 미리 각 데이터 블록의 해시를 생성하여 암호화하고 백엔드 서버에 저장해 둔다. 증분 백업 시에는 서버에 저장된 암호화된 해시 정보를 이용하며, 데이터의 나머지 부분도 암호화되어 저장된다. 성능 향상을 위해 로컬에 'archive-dir'이라는 캐시 디렉토리를 사용하여 백업 체인 시그니처를 저장하지만, 필요한 경우 백엔드에서 다시 다운로드할 수 있다.

5. 4. 기타

rdiff 유틸리티는 rsync 알고리즘을 사용하여 파일 A와 파일 B의 차이점을 나타내는 델타 파일을 생성한다(diff 유틸리티와 유사하지만 델타 형식은 다르다). 이 델타 파일을 파일 A에 적용하면 파일 B로 변환할 수 있다(패치 유틸리티와 유사). rdiff는 이진 파일 처리에도 효과적이다.
rdiff-backup 스크립트는 파일 또는 디렉터리의 백업 미러를 로컬 또는 네트워크를 통해 다른 서버에 원격으로 유지 관리한다. 백업 시 생성되는 rdiff 델타 파일들을 저장하여, 특정 시점의 백업 상태로 복원하는 것이 가능하다.[32]

rdiff에서 사용되는 librsync 라이브러리는 rsync 알고리즘의 독립적인 구현체이다. rsync 네트워크 프로토콜을 사용하지 않으며 rsync 애플리케이션과 코드를 공유하지 않는다.[33] Dropbox, rdiff-backup, duplicity 등 여러 유틸리티에서 활용된다.[33]
acrosync 라이브러리는 rsync 네트워크 프로토콜(버전 29 또는 30)과 호환되는 독립적이고 플랫폼 간 이식성을 갖춘 구현체이다.[34] librsync와 달리 rsync와 직접 통신이 가능하다. 상호 공개 라이선스로 배포되며, 상용 rsync 소프트웨어인 Acrosync의 기반 기술로 사용된다.[35]
duplicity파이썬으로 작성된 백업 소프트웨어이다. 로컬 파일 시스템, sftp, 아마존 S3 등 다양한 스토리지 백엔드를 지원하며 증분 백업 기능을 제공한다. librsync 라이브러리를 사용하여 파일 버전 간의 델타 데이터를 생성하고, gpg로 암호화하여 백엔드에 저장한다.

macOS 10.5 이상 버전에서는 `-E` 또는 `--extended-attributes` 옵션을 사용하여 HFS+ 파일 시스템의 확장 속성 메타데이터 대부분을 보존하며 동기화할 수 있다. 이는 리소스 포크를 데이터 포크와 함께 전송하는 방식으로 이루어진다.[36]
zsync는 파일 버전당 다수의 다운로드가 발생하는 경우에 최적화된 rsync 유사 도구이다. Ubuntu와 같은 리눅스 배포판에서 자주 변경되는 베타 버전 ISO 이미지 배포에 사용된다. zsync는 HTTP 프로토콜을 기반으로 하며, 미리 계산된 롤링 해시 정보가 담긴 `.zsync` 파일을 이용하여 서버 부하를 최소화하면서 차이점만 전송하는 네트워크 최적화를 구현한다.[38]
Rclone은 클라우드 스토리지 및 지연 시간이 긴 스토리지 환경에 특화된 오픈 소스 도구로, rsync에서 영감을 받아 개발되었다. 50개 이상의 다양한 클라우드 서비스 제공자를 지원하며, 클라우드 스토리지를 위한 rsync와 유사한 인터페이스를 제공한다.[39] 하지만 Rclone은 부분 파일 동기화(롤링 체크섬을 이용한 바이너리 차이 비교) 기능은 지원하지 않는다. 이는 대부분의 클라우드 스토리지 제공자가 해당 기능을 지원하지 않으며, Rclone 자체가 추가적인 메타데이터 저장을 피하려는 설계 목표를 가지고 있기 때문이다.[40]

6. rsync 응용 프로그램

rsync 프로토콜이나 알고리즘을 기반으로 하는 다양한 응용 프로그램들이 존재한다. 이러한 프로그램들은 리눅스, macOS, 윈도우 등 여러 운영체제 환경에서 사용할 수 있도록 개발되었으며, 단순한 파일 동기화를 넘어 백업, 미러링, 클라우드 스토리지 연동 등 특정 목적에 맞게 기능을 강화하거나 GUI를 제공하여 사용 편의성을 높였다. 일부 프로그램은 자유 소프트웨어로 개발되어 소스 코드가 공개되고 자유롭게 수정 및 배포될 수 있다.

6. 1. 주요 응용 프로그램

wikitext

프로그램운영체제자유 소프트웨어설명
리눅스macOS윈도우
Back In Time지원미지원미지원리눅스용 백업 도구이다.
BackupAssist미지원미지원지원아니요윈도우용 백업 도구이다. 직접 미러링 또는 기록 방식과 함께 VSS를 지원한다.
cwRsync미지원미지원지원아니요시그윈 기반의 윈도우용 rsync이다.
Grsync지원지원지원[41]rsync를 위한 그래픽 인터페이스이다.
GS RichCopy 360미지원미지원지원[51]아니요윈도우 워크스테이션 및 서버용으로 설계되었으며, VSS를 지원한다.
LuckyBackup지원지원지원크로스 플랫폼 백업 도구이다.
[https://rclone.org/ Rclone]지원지원지원rsync에서 영감을 받은 도구로, 50개 이상의 클라우드 스토리지 제공업체 및 기타 고지연 스토리지 서비스를 지원한다. rsync 프로토콜을 직접 사용하지 않으며, 롤링 체크섬과 부분 파일 동기화 기능은 지원하지 않는다.
Robocopy미지원미지원지원아니요유사 기능을 제공하는 마이크로소프트 윈도우 기본 포함 도구이다.
[http://dragoman.org/tym tym]지원지원지원Time rsYnc Machine의 약자. Time Machine과 유사한 백업 기능을 제공하는 Bash 스크립트이다.


참조

[1] 뉴스그룹 First release of rsync – rcp replacement http://groups.google[...] 1996-06-19
[2] 웹사이트 News https://download.sam[...]
[3] 웹사이트 tweaking the license text a bit more https://git.samba.or[...]
[4] 웹사이트 rsync's license https://rsync.samba.[...]
[5] 웹사이트 rsync's license http://rsync.samba.o[...]
[6] 웹사이트 rsync(1) – Linux man page https://linux.die.ne[...] 2017-02-02
[7] 서적 Lossless compression handbook https://books.google[...] Elsevier 2002-12-18
[8] 서적 Web content caching and distribution: proceedings of the 8th International Workshop https://archive.org/[...] Springer Science & Business Media
[9] 문서 "In-Place Rsync: File Synchronization for Mobile and Wireless Devices" http://hssl.cs.jhu.e[...] Department of Computer Science, Johns Hopkins University
[10] 간행물 Towards an Efficient, Scalable Replication Mechanism for the I2-DSI Project 1999-04-30
[11] 웹사이트 Bash - Speed up rsync with Simultaneous/Concurrent File Transfers? - Stack Overflow https://stackoverflo[...] 2019-12-18
[12] 웹사이트 Using Rsync and SSH https://troy.jdmz.ne[...] Troy.jdmz.net 2014-08-18
[13] 웹사이트 Using and running mirrors https://www.gnu.org/[...] GNU Project 2020-04-15
[14] 웹사이트 How to create public mirrors for CentOS https://wiki.centos.[...] CentOS wiki 2020-04-15
[15] 웹사이트 rdist(1) https://man.freebsd.[...]
[16] 문서 Efficient Algorithms for Sorting and Synchronization "//rsync.samba.org/~[...] 1999-02
[17] 웹사이트 rsync http://rsync.samba.o[...] 2014-11-28
[18] 웹사이트 Tool Warehouse http://www.suacommun[...]
[19] 웹사이트 FreeBSD Ports https://svnweb.freeb[...] 2016-10-24
[20] 웹사이트 NetBSD Ports http://ftp.netbsd.or[...] 2016-10-24
[21] 웹사이트 OpenBSD Ports http://cvsweb.openbs[...] 2016-10-24
[22] 문서 README file http://rsync.samba.o[...]
[23] 웹사이트 How to Mirror FreeBSD (With rsync) http://www.freebsd.o[...] Freebsd.org 2014-08-18
[24] 웹사이트 How to become a mirror for the Apache Software Foundation http://www.apache.or[...] Apache.org 2014-08-18
[25] 웹사이트 PuTTY Web Site Mirrors: Mirroring guidelines http://www.chiark.gr[...] Chiark.greenend.org.uk 2014-08-18
[26] 웹사이트 Rsync set up to run like Time Machine http://blog.interlin[...] Blog.interlinked.org 2014-08-18
[27] 웹사이트 Full system backup with rsync https://wiki.archlin[...] wiki.archlinux.org 2014-12-15
[28] 웹사이트 How Rsync Works https://rsync.samba.[...] 2017-01-24
[29] 웹사이트 RSync – Overview http://tutorials.jen[...] 2017-04-09
[30] 웹사이트 News for rsync 3.0.0 http://rsync.samba.o[...] 2008-03-01
[31] 웹사이트 The Rsync Algorithm https://www.cs.tufts[...]
[32] 웹사이트 rdiff-backup rdiff-backup.net/
[33] 문서 librsync http://librsync.sour[...]
[34] 웹사이트 acrosync-library https://github.com/g[...] github.com 2016-06-22
[35] 웹사이트 acrosync.com https://acrosync.com 2020-07-29
[36] 웹사이트 Mac Developer Library https://developer.ap[...] Developer.apple.com 2014-08-18
[37] 웹사이트 Zsync Cd Image https://help.ubuntu.[...] 2015-01-06
[38] 웹사이트 zsync web site http://zsync.moria.o[...]
[39] 웹사이트 Overview of cloud storage systems https://rclone.org/o[...] 2017-07-10
[40] 웹사이트 Rclone Frequently Asked Questions https://rclone.org/f[...] 2022-05-13
[41] 웹사이트 Grsync for Windows https://sourceforge.[...] 2016-07-12
[42] 뉴스 First release of rsync - rcp replacement https://groups.googl[...] 1996-06-19
[43] 뉴스그룹 First release of rsync - rcp replacement http://groups.google[...] 1996-06-19
[44] 웹인용 rsync(1) - Linux man page https://linux.die.ne[...] 2017-02-02
[45] 웹인용 Using Rsync and SSH http://troy.jdmz.net[...] Troy.jdmz.net 2014-08-18
[46] 서적 Lossless compression handbook https://books.google[...] Books.google.com 2002-12-18
[47] 서적 Web content caching and distribution: proceedings of the 8th International Workshop https://books.google[...] Books.google.com
[48] 간행물 "In-Place Rsync: File Synchronization for Mobile and Wireless Devices" http://hssl.cs.jhu.e[...] Department of Computer Science, Johns Hopkins University 20160413200016
[49] 저널 Towards an Efficient, Scalable Replication Mechanism for the I2-DSI Project 1999-04-30
[50] 웹사이트 Grsync for Windows http://grsync-win.so[...]
[51] 웹인용 GS RichCopy 360 Enterprise for Windows http://www.gurusquad[...] 2018-12-22



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com