동기

rsync
동기
Newrsynclogo.png
원저작자앤드류 트리젤, 폴 맥케라스[1]
개발자웨인[2] 데이비슨
초기 릴리즈1996년 6월 19일, 26년 전(1996-06-19)[1]
안정된 릴리스
3.2.4[3] / 2022년 4월 15일; 3개월 전 (2022년 4월 15일)
저장소
기입처C
플랫폼크로스 플랫폼
유형데이터 전송, 차등 백업
면허증.2007: GPL-3.0 이후[a][4][5][6]
2007: GPL-3.0만[b]
2007: GPL-2.0만[c]
1996: GPL-2.0 이후[d][7]
웹 사이트rsync.samba.org Edit this on Wikidata

rsync는 파일 [8]변경 시간과 크기를 비교하여 컴퓨터와 스토리지 드라이브 간 및 네트워크 컴퓨터 에 파일을 효율적으로 전송동기화하기 위한 유틸리티입니다.일반적으로 Unix유사한 운영 체제에서 볼 수 있으며 GPL-3.0 이후의 라이센스 [4][5][9][10][11][12]하에 있습니다.

Rsync는 C[13]단일 스레드 애플리케이션으로 기술되어 있습니다.rsync 알고리즘은 델타 인코딩의 일종으로 네트워크 사용을 최소화하기 위해 사용됩니다.추가 [8]데이터 압축에는 Zlib를 사용할 수 있으며 보안에는 SSH 또는 스턴넬을 사용할 수 있습니다.Rsync는 패키지 관리 시스템에서 [14][15]사용되는 미러 사이트의 소프트웨어 저장소를 동기화하는 데 일반적으로 사용되는 기능입니다.

일반적으로 Rsync는 두 개의 다른 시스템 간에 파일 및 디렉토리를 동기화하기 위해 사용됩니다.예를 들어 명령어가rsync local-file user@remote-host:remote-file실행되면 rsync는 SSH를 사용하여 접속합니다.user로.remote-host접속이 완료되면 리모트호스트의 rsync를 호출하여 리모트파일이 로컬파일에 일치하도록 전송해야 할 로컬파일의 일부를 2개의 프로그램에서 결정합니다.[16]

Rsync는 데몬 모드(rsyncd)에서도 동작할 수 있으며 네이티브 rsync 프로토콜로 파일을 송수신할 수 있습니다('rsync://' 구문 사용).

역사

앤드류 트리젤과 폴 맥케라스는 1996년 [1]6월 19일에 처음 발표된 오리지널 rsync를 썼다.rdist(와 기능 및 호출이 유사합니다.rdist -c랄프 캠벨에 의해 1983년에 설립되어 버클리 소프트웨어 [17]디스트리뷰션으로 출시되었습니다.Tridgell은 1999년 [18]박사 논문의 3장부터 5장까지에서 rsync의 설계, 구현 및 성능에 대해 설명합니다.그것은 현재 웨인 데이비슨에 [2]의해 유지되고 있다.

유연성, 속도 및 스크립트 용이성 때문에rsync Linux의 표준 유틸리티가 되어 널리 사용되는 모든 Linux [citation needed]디스트리뷰션에 포함되어 있습니다.Windows(Cygwin, Grsync 또는 SFU[19] 경유), FreeBSD,[20] NetBSD,[21] OpenBSD [22]macOS로 이식되었습니다.

사용하다

및 와 마찬가지로, 송신원 및 수신처를 지정해야 합니다.이 중 적어도1개는 [23]로컬이어야 합니다.

일반 구문:

rsync [OPTION]... SRC...[USER@]호스트: DEST rsync [OPTION]...[USER@]호스트: SRC [DEST]

여기서 SRC는 복사원 파일 또는 디렉토리(또는 여러 파일과 디렉토리의 목록), DEST는 복사원 파일 또는 디렉토리, 각 괄호는 옵션파라미터를 나타냅니다.

rsync를 사용하여 Unix 클라이언트를 중앙 Unix 서버와 동기화할 수 있습니다.rsync/ssh및 표준 Unix 계정.예를 들어 외장 하드 드라이브의 백업 복사본과 파일을 효율적으로 동기화하기 위해 데스크톱 환경에서 사용할 수 있습니다.다음과 같은 스케줄링 유틸리티cron자동 암호화 등의 작업을 수행할 수 있습니다.rsync- 여러 호스트와 중앙 서버 간의 미러링을 기반으로 합니다.

FreeB를 미러링하는 명령줄SD의 외관:

$ rsync - avz --ftp4.de 를 삭제합니다.FreeBSD.org:FreeBSD//pub/FreeBSD/[24]

Apache HTTP 서버는 미러 업데이트에 대해서만 rsync를 지원합니다.

$ rsync - avz --delete --safe-dist rsync.apache.org : : : context - dist / path / to[25] / mirror

PuTTY 웹사이트를 현재 디렉토리에 미러링하기 위한 권장(그리고 간단한) 방법은 rsync를 사용하는 것입니다.

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

Time Machine(macOS)[27]기능을 모방하는 방법. "Time rsYnc Machine(tym)"[28]도 참조하십시오.

$ date=$(날짜 "+%")FT%H-%M-%S) # rsync는 ":"을 호스트와 포트(즉, host:port) 사이의 구분자로 해석하므로 %T 또는 %H:%M:사용할 수 없습니다.여기서 %S는 %H-%M-%S $rsync-aP --link-dest=$사용합니다.HOME/백업/현재 /path/to/important_files $HOME/Backups/back-date $ln - nfs $HOME/Backups/back-date $HOME/Backups/current

시스템 루트 [29]디렉토리의 전체 백업을 만듭니다.

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

디렉토리내의 모든 파일 및 디렉토리를 고속으로 삭제합니다.

# 빈 디렉토리를 만듭니다(첫 번째 경로).두 번째 경로는 비우는 디렉토리입니다.$ rsync - a --delete / path / to / empty / path / to / path / to / empty

연결

rsync 프로세스는 다른 rsync 프로세스인 송신기 및 수신기와 통신함으로써 동작한다.기동시에, rsync 클라이언트는 피어 프로세스에 접속합니다.전송이 로컬인 경우(즉, 같은 호스트에 마운트된 파일 시스템 간) 연결에 적합한 파이프를 설정한 후 포크를 사용하여 피어를 생성할 수 있습니다.리모트 호스트가 관여하고 있는 경우, rsync는 접속(통상은 Secure Shell)을 처리하는 프로세스를 시작합니다.접속 시 명령어가 발행되어 리모트호스트 상에서 rsync 프로세스를 시작합니다.이것에 의해, 확립된 접속이 사용됩니다.또, 리모트호스트가 rsync 데몬을 실행하고 있는 경우,[30] rsync 클라이언트는, TCP 포토 873 의 소켓을 여는 것으로 접속할 수 있습니다(프록시를 사용하는 경우도 있습니다.

Rsync에는 대체 셸, 옵션, 명령어, 풀패스 및 포트 번호를 지정하기 위한 다수의 명령줄 옵션과 컨피규레이션파일이 있습니다.리모트 셸을 사용하는 것 외에 터널링을 사용하면 rsync 데몬이 실행되는 서버에서 리모트포트를 로컬로 표시할 수 있습니다.이러한 가능성을 통해 보안 수준을 최첨단 수준으로 조정할 수 있지만 로컬네트워크에는 순진한 rsync 데몬으로 충분합니다.

알고리즘.

보낼 파일 결정

기본적으로는 rsync는 각 파일의 변경 시간과 크기를 확인하여 송신 시스템과 수신 시스템 간에 다른 파일을 판별합니다.시스템간에 시간이나 사이즈가 다른 경우는, 송신측에서 수신측 시스템으로 파일을 전송합니다.파일 디렉토리 정보만 읽으면 되기 때문에 빠르지만,[8] 둘 다 변경되지 않는 비정상적인 수정을 놓치게 됩니다.

Rsync는 다음과 같이 호출된 경우 더 느리지만 포괄적인 검사를 수행합니다.--checksum이것에 의해, 양쪽의 시스템에 존재하는 모든 파일의 완전한 체크 섬 비교가 강제됩니다.이렇게 하면 드물게 체크섬 충돌이 발생하지 않는 한 두 시스템에 있는 모든 파일을 읽는 데 드는 비용으로 변경된 파일이 손실될 위험을 피할 수 있습니다.

파일의 어떤 부분이 변경되었는지 확인

rsync 유틸리티는 호주의 컴퓨터 프로그래머 Andrew Tridgel고안한 알고리즘을 사용하여 수신하는 컴퓨터가 이미 동일한 [31]구조의 버전을 가지고 있을 때 통신 링크를 통해 구조(파일 등)를 효율적으로 전송합니다.

수신자는 파일의 복사본을 청크로 분할하고 각 청크에 대해 MD5 해시 및 더 약하지만 '롤링 체크섬'[32] 계산하기 쉬운 두 개의 체크섬을 계산합니다.이러한 체크섬을 송신자에게 송신합니다.

송신자는, 수신자가 사용하는 청크와 같은 사이즈의 파일의 버전에 있는 각 롤링 섹션의 체크섬을 계산합니다.수신자는 청크기의 최대 배수로 시작하는 청크에 대해서만 체크섬을 계산하지만 송신자는 임의의 주소에서 시작하는 모든 섹션의 체크섬을 계산합니다.송신자가 계산한 이러한 롤링 체크섬이 수신자가 계산한 체크섬과 일치하는 경우 이 섹션은 섹션의 내용을 전송하지 않고 수신자 파일 내의 위치만 전송합니다.이 경우, 송신자는 보다 고가의 계산 MD5 해시를 사용하여 송신자의 섹션과 수신자의 청크가 동일한지 확인합니다.송신자의 섹션은 수신자의 청크와 같은 시작 주소에 있지 않을 수 있습니다.이것에 의해, 삽입과 [33]삭제에 의해서 다른 파일을 효율적으로 송신할 수 있습니다.그런 다음 발신인은 기존 블록을 수신인의 버전으로 병합할 위치에 대한 정보와 함께 파일의 일치하지 않는 부분을 수신인에게 보냅니다.이것에 의해, 카피가 같게 됩니다.

rsync에서 사용되는 롤링 체크섬은 zlib에서 사용되는 Mark Adler-32 체크섬을 기반으로 하며 Fletcher의 체크섬을 기반으로 합니다.

송신측과 수신측의 버전의 파일에 공통의 섹션이 많은 경우는, 파일을 동기화하기 위해서 비교적 적은 데이터를 전송 할 필요가 있습니다.일반적인 데이터 압축 알고리즘을 사용하는 경우 압축하지 않을 때 유사한 파일은 압축할 때 매우 다를 수 있으므로 파일 전체를 전송해야 합니다.gzip 등의 일부 압축 프로그램에서는 특별한 rsyncable 모드를 제공합니다.이 모드를 사용하면 압축되지 않은 파일의 로컬 변경만 확실하게 할 수 있기 때문에 이러한 파일을 효율적으로 rsync할 수 있습니다.

Rsync는 데이터 전송 또는 백업에 큰 도움이 되는 기타 주요 기능을 지원합니다.여기에는 zlib를 사용한 블록별 데이터 압축 및 압축 해제, ssh 및 스턴넬 등의 프로토콜 지원이 포함됩니다.

바리에이션

rdiff 유틸리티는 rsync 알고리즘을 사용하여 파일A에서 파일B로 다른 델타 파일을 생성합니다(유틸리티 diff 등, 다른 델타 형식).그런 다음 델타 파일을 파일A에 적용하여 파일B로 변환할 수 있습니다(패치유틸리티와 유사).rdiff는 바이너리 파일에 적합합니다.

rdiff-backup 스크립트는 파일 또는 디렉토리의 백업 미러를 다른 서버의 네트워크를 통해 로컬 또는 리모트로 유지합니다.rdiff-backup은 백업과 함께 증분 rdiff 델타를 저장합니다.이것에 의해, 임의의 백업 [34]포인트를 재작성할 수 있습니다.

rdiff에 의해 사용되는 libsync 라이브러리는 rsync 알고리즘의 독립된 구현입니다.rsync 네트워크 프로토콜을 사용하지 않으며 rsync [35]애플리케이션과 코드를 공유하지 않습니다.Dropbox, rdiff-backup, 이중성 및 기타 [35]유틸리티에서 사용됩니다.

acrosync 라이브러리는 rsync 네트워크 [36]프로토콜의 독립적인 크로스 플랫폼 구현입니다.libsync와는 달리 rsync(프로토콜버전 29 또는 30)와 와이어 호환성이 있습니다.Recomercal Public License에 따라 출시되며 상용 rsync [37]소프트웨어인 Acrosync에 의해 사용됩니다.

파이썬으로 작성이중 백업 소프트웨어는 로컬 파일 시스템, sftp, Amazon S3 등의 간단한 스토리지 백엔드 서비스를 통해 증분 백업을 지원합니다.또한 librsync를 사용하여 이전 파일 버전의 서명에 대한 델타 데이터를 생성하고 gpg를 사용하여 암호화하여 백엔드에 저장합니다.퍼포먼스상의 이유로 로컬아카이브 dir를 사용하여 백업체인 시그니처를 캐시합니다만, 필요에 따라서 백엔드에서 재다운로드 할 수 있습니다.

macOS 10.5 이후로는 특별한 기능이 있습니다.-E또는--extended-attributes스위치: 이 기능을 지원하는 2대의 머신 간에 동기화할 때 HFS 파일 메타데이터의 대부분을 유지할 수 있습니다.이것은 데이터 [38]포크와 함께 리소스 포크를 전송함으로써 이루어집니다.

zsync는 파일 버전당 많은 다운로드에 최적화된 rsync와 같은 도구입니다.zsync는 빠르게 변화하는 베타 ISO 이미지 파일을 배포하기 위해 Ubuntu[39] 같은 Linux 배포에서 사용됩니다.zsync는 미리 계산된 롤링 해시를 사용하여 서버 로드를 최소화하면서도 네트워크 최적화를 위해 다른 전송을 허용합니다.

Rclone은 클라우드 및 기타 대기 시간이 긴 스토리지에 초점을 맞춘 rsync에서 영감을 얻은 오픈 소스 도구입니다.50개 이상의 프로바이더를 지원하며 클라우드 스토리지에 [40]rsync와 같은 인터페이스를 제공합니다.그러나 Rclone은 일반적으로 클라우드 스토리지 공급자가 이 기능을 제공하지 않고 [41]추가 메타데이터를 저장하지 않기 때문에 부분 파일 동기화(바이너리 차이)에 대한 롤링 체크섬을 지원하지 않습니다.

rsync 어플리케이션

프로그램. 운영 체제 무료 소프트웨어 묘사
리눅스 MacOS 창문들
백 인 타임 네. 아니요. 아니요. 네.
백업 어시스턴트 아니요. 아니요. 네. 아니요. 다이렉트 미러 또는 이력 포함, VSS.
cwRsync 아니요. 아니요. 네. 아니요. Cygwin을 기반으로 합니다.
동기 네. 네. 네, 그렇습니다[42]. 네. rsync용 그래피컬인터페이스
GS RichCopy 360 아니요. 아니요. 네, 그렇습니다[43]. 아니요. VSS를 지원하는 MS Windows 워크스테이션 및 서버 전용입니다.
Lucky Backup 네. 네. 네. 네.
클론 네. 네. 네. 네. rsync에서 영감을 얻어 50개 이상의 클라우드 스토리지 프로바이더 및 기타 대기 시간이 긴 스토리지 서비스를 지원합니다.실제로 rsync를 사용하지 않거나 롤링 체크섬 및 부분 파일 동기화를 지원하지 않습니다.
스냅숏 네. 네. 아니요. 네. rsync 기반 파일 시스템 스냅샷 유틸리티입니다.
동기화 네. 네. 네. 아니요. rsync over HTTP(S)를 사용합니다.
네. 네. 네. 네. Time rsYnc Machine – Time Machine – Bash 스크립트 백업
야르싱크 네. 네. 아니요. 네. 그러나 또 다른 Rsync는 Git과 유사한 인터페이스를 사용하여 UNIX와 유사한 시스템 또는 백업 드라이브 간에 파일을 동기화합니다.

「 」를 참조해 주세요.

메모들

  1. ^ 2007-07-10 이후의 GPL-3.0 이후, 2007-10-05의 프리 릴리즈 3.0.0 pre1, 2008-03-01의 안정판 3.0.0.
  2. ^ 2007-07-07 ~2007-09 까지의 GPL-3.0 한정
  3. ^ 2007-02-04 ~2007-07 까지의 GPL-2.0 한정.
  4. ^ 1996-06-16부터2007-01-31까지의 GPL-2.0 이후 버전 0.1~2.6.9

레퍼런스

  1. ^ a b c Tridgell, Andrew (19 June 1996). "First release of rsync – rcp replacement". Newsgroup: comp.os.linux.announce. Usenet: cola-liw-835153950-21793-0@liw.clinet.fi. Archived from the original on 8 November 2011. Retrieved 19 July 2007.
  2. ^ a b "rsync". Archived from the original on 27 November 2014. Retrieved 28 November 2014.
  3. ^ "NEWS for rsync 3.2.4 (15 Apr 2022)". Retrieved 16 April 2022.
  4. ^ a b "NEWS".
  5. ^ a b "tweaking the license text a bit more".
  6. ^ "rsync's license".
  7. ^ "rsync's license".
  8. ^ a b c "rsync(1) – Linux man page". linux.die.net. Archived from the original on 1 January 2017. Retrieved 2 February 2017.
  9. ^ Sayood, Khalid (18 December 2002). Lossless compression handbook. ISBN 9780080510491. Retrieved 18 August 2014.
  10. ^ Web content caching and distribution: proceedings of the 8th International Workshop. Springer Science & Business Media. 2004. p. 316. Retrieved 18 August 2014 – via Internet Archive. rsync widely used.
  11. ^ Rasch, David, Burns, Randal, In-Place Rsync: 모바일무선 디바이스용 파일 동기화 2016년 4월 13일 존스 홉킨스 대학교 컴퓨터 과학부 Wayback Machine에 보관
  12. ^ Dempsey, Bert J.; Weiss, Debra (30 April 1999). "Towards an Efficient, Scalable Replication Mechanism for the I2-DSI Project". Technical Report TR-1999-01. CiteSeerX 10.1.1.95.5042.
  13. ^ "Archived copy". Archived from the original on 6 August 2019. Retrieved 18 December 2019.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  14. ^ "Using and running mirrors". GNU Project. Archived from the original on 16 April 2020. Retrieved 15 April 2020.
  15. ^ "How to create public mirrors for CentOS". CentOS wiki. Archived from the original on 1 April 2020. Retrieved 15 April 2020.
  16. ^ "Using Rsync and SSH". Troy.jdmz.net. Retrieved 18 August 2014.
  17. ^ "Rdist Manual Page".
  18. ^ Tridgel, Andrew; Efficient Algorithms for Sorting and Synchronization, 1999년 2월 2009년 9월 29일 취득
  19. ^ "Tool Warehouse". SUA Community. Archived from the original on 6 April 2013.
  20. ^ "FreeBSD Ports". Retrieved 24 October 2016.
  21. ^ "NetBSD Ports". Archived from the original on 25 October 2016. Retrieved 24 October 2016.
  22. ^ "OpenBSD Ports". Retrieved 24 October 2016.
  23. ^ Wayback Machine에서 2007년 12월 10일에 아카이브된 README 파일을 참조하십시오.
  24. ^ "How to Mirror FreeBSD (With rsync)". Freebsd.org. Retrieved 18 August 2014.
  25. ^ "How to become a mirror for the Apache Software Foundation". Apache.org. Archived from the original on 21 August 2014. Retrieved 18 August 2014.
  26. ^ "PuTTY Web Site Mirrors: Mirroring guidelines". Chiark.greenend.org.uk. 20 December 2007. Archived from the original on 19 August 2014. Retrieved 18 August 2014.
  27. ^ "Rsync set up to run like Time Machine". Blog.interlinked.org. Archived from the original on 15 November 2007. Retrieved 18 August 2014.
  28. ^ "Time rsYnc Machine (tym)".{{cite web}}: CS1 maint :url-status (링크)
  29. ^ "Full system backup with rsync". wiki.archlinux.org. Archived from the original on 11 February 2015. Retrieved 15 December 2014.
  30. ^ "How Rsync Works". Archived from the original on 16 December 2016. Retrieved 24 January 2017.
  31. ^ "RSync – Overview". Archived from the original on 10 April 2017. Retrieved 9 April 2017.
  32. ^ rsync 3.0.0 뉴스 2008년 3월 20일 Wayback Machine에서 아카이브 (2008년 3월 1일)
  33. ^ 노먼 램지.Rsync 알고리즘
  34. ^ 백업
  35. ^ a b Pool, Martin, 2013년 12월 9일 Wayback Machine에서 "librsync" 아카이브 완료
  36. ^ Chen, Gilbert. "acrosync-library". github.com. Archived from the original on 10 February 2017. Retrieved 22 June 2016.
  37. ^ "acrosync.com". Archived from the original on 20 December 2019. Retrieved 29 July 2020.
  38. ^ "Mac Developer Library". Developer.apple.com. Archived from the original on 26 September 2012. Retrieved 18 August 2014.
  39. ^ "Zsync Cd Image". ubuntu.com. Retrieved 6 January 2015.
  40. ^ Craig-Wood, Nick. "Overview of cloud storage systems". rclone.org. Archived from the original on 4 October 2017. Retrieved 10 July 2017.
  41. ^ Craig-Wood, Nick. "Rclone Frequently Asked Questions". rclone.org. Archived from the original on 10 May 2022. Retrieved 13 May 2022.
  42. ^ "Grsync for Windows". SourceForge. Archived from the original on 24 March 2019. Retrieved 24 March 2019.
  43. ^ "GS RichCopy 360 Enterprise – File Fast copy or sync software and rsync for windows". www.gurusquad.com.

외부 링크