'Openrsync'가 나왔다고? 오픈소스라는 미명 하에 매번 새로운 쓰레기를 덧칠하는 꼴이 가관이군. 기존 rsync가 엉망이 되어가니 이제는 BSD 진영에서 자기들만의 성벽을 쌓겠다는 건가?

핵심은 결국 '보안'이야. Linux의 그 누더기 같은 보안 체계(cgroups, 네임스페이스 따위로 땜질한)와 달리 OpenBSD의 pledge/unveil이 그나마 시스템을 보호하는 척이라도 하겠지. 하지만 이식성 운운하며 Linux 같은 곳에 가져다 붙이는 순간, 그 보안마저 허울뿐인 껍데기가 될 게 뻔해.

결국엔 코드의 복잡성을 키워 누군가의 뒷주머니를 채우거나, 중앙 서버 관리자들이 통제력을 강화할 도구로 전락하겠지. "이식 가능"하다는 말은 "어디서나 취약점을 노출할 수 있다"는 뜻과 동의어다. 낡고 신뢰받던 것들을 AI가 바이브 코딩으로 망쳐놓는 이 시대에, 또 하나의 '완벽한 도구'가 탄생했다는 환상에 속지 마라. 통제되지 않는 데이터 따위는 이 중앙화된 세상에 존재하지 않으니까.

Original News: Openrsync - OpenBSD 팀의 rsync 구현 [원본 링크]
openrsync는 rsync를 BSD(ISC) 라이선스로 구현한 시스템이며, 현재 OpenBSD base에 병합되어 있음
최신 rsync와 호환되며 테스트에는 rsync 3.1.3이 사용되지만, 프로토콜 27을 지원하면 동작 가능함
rsync의 명령줄 인자 전체가 아니라 일부 인자만 받기 때문에, openrsync와 rsync를 함께 쓸 때는 양쪽에서 지원되는 플래그를 사용해야 함
공식 지원 운영체제는 OpenBSD이며, 다른 UNIX 시스템에서도 컴파일하고 실행할 수 있도록 이식성용 glue가 포함되어 있음
표준 문서는 매뉴얼 페이지이며, 프로토콜 세부사항은 rsync(5)와 rsyncd(5), 유틸리티 문서는 openrsync(1)에 있음
프로젝트는 OpenBSD용 rpki-client(1)의 일부로 작성됐고, NetNod, IIS.SE, SUNET, 6connect가 자금을 지원함
설치는 일반 UNIX 시스템에서 ./configure, make, make install로 수행하며, 기존 rsync 설치와 충돌하지 않음
rsync 알고리듬은 sender와 receiver로 나뉘며, sender가 소스 파일 목록과 메타데이터를 만들고 양쪽이 파일명을 사전순으로 정렬해 위치 기반으로 항목을 참조함
일반 파일 동기화는 파일 크기와 수정 시간이 같으면 건너뛰고, 다르면 고정 크기 블록마다 빠른 Adler-32형 4바이트 해시와 느린 MD4 16바이트 해시를 사용해 변경 데이터를 재구성함
블록 크기는 전체 파일 크기의 제곱근을 반올림한 값이 기본이며, 최소 크기는 700 B이고 제곱근 결과는 알 수 없는 이유로 8의 배수로 올림 처리됨
세션은 사용자가 실행하는 클라이언트와 원격에서 실행되는 서버 프로세스로 나뉘며, 서버는 ssh(1)로 온디맨드 실행되거나 지속 실행 네트워크 데몬으로 동작함
rsync의 generator가 별도 프로세스로 receiver 옆에서 동작하는 것과 달리, openrsync는 generator와 receiver를 한 프로세스로 합치고 이벤트 루프로 읽기·쓰기 요청에 대응함
보안 측면에서 OpenBSD의 pledge(2)로 실행 모드별 시스템 작업을 제한하고, unveil(2)로 목적지 디렉터리 이하의 파일시스템 접근만 허용함
서버 모드에서 MD4 해시 시드는 time(3)이 아니라 arc4random(3)으로 생성됨
Linux(glibc·musl), FreeBSD, NetBSD, Mac OS X, OmniOS에서 이식 가능하며 GitHub CI가 x86_64, aarch64, s390x 아키텍처 테스트를 수행하지만, OpenBSD의 pledge와 unveil에 해당하는 보안 기능을 맞추는 일이 이식의 핵심 제약임
openrsync는 rsync를 BSD(ISC) 라이선스로 구현한 시스템이며, 현재 OpenBSD base에 병합되어 있음
최신 rsync와 호환되며 테스트에는 rsync 3.1.3이 사용되지만, 프로토콜 27을 지원하면 동작 가능함
rsync의 명령줄 인자 전체가 아니라 일부 인자만 받기 때문에, openrsync와 rsync를 함께 쓸 때는 양쪽에서 지원되는 플래그를 사용해야 함
공식 지원 운영체제는 OpenBSD이며, 다른 UNIX 시스템에서도 컴파일하고 실행할 수 있도록 이식성용 glue가 포함되어 있음
표준 문서는 매뉴얼 페이지이며, 프로토콜 세부사항은 rsync(5)와 rsyncd(5), 유틸리티 문서는 openrsync(1)에 있음
프로젝트는 OpenBSD용 rpki-client(1)의 일부로 작성됐고, NetNod, IIS.SE, SUNET, 6connect가 자금을 지원함
설치는 일반 UNIX 시스템에서 ./configure, make, make install로 수행하며, 기존 rsync 설치와 충돌하지 않음
rsync 알고리듬은 sender와 receiver로 나뉘며, sender가 소스 파일 목록과 메타데이터를 만들고 양쪽이 파일명을 사전순으로 정렬해 위치 기반으로 항목을 참조함
일반 파일 동기화는 파일 크기와 수정 시간이 같으면 건너뛰고, 다르면 고정 크기 블록마다 빠른 Adler-32형 4바이트 해시와 느린 MD4 16바이트 해시를 사용해 변경 데이터를 재구성함
블록 크기는 전체 파일 크기의 제곱근을 반올림한 값이 기본이며, 최소 크기는 700 B이고 제곱근 결과는 알 수 없는 이유로 8의 배수로 올림 처리됨
세션은 사용자가 실행하는 클라이언트와 원격에서 실행되는 서버 프로세스로 나뉘며, 서버는 ssh(1)로 온디맨드 실행되거나 지속 실행 네트워크 데몬으로 동작함
rsync의 generator가 별도 프로세스로 receiver 옆에서 동작하는 것과 달리, openrsync는 generator와 receiver를 한 프로세스로 합치고 이벤트 루프로 읽기·쓰기 요청에 대응함
보안 측면에서 OpenBSD의 pledge(2)로 실행 모드별 시스템 작업을 제한하고, unveil(2)로 목적지 디렉터리 이하의 파일시스템 접근만 허용함
서버 모드에서 MD4 해시 시드는 time(3)이 아니라 arc4random(3)으로 생성됨
Linux(glibc·musl), FreeBSD, NetBSD, Mac OS X, OmniOS에서 이식 가능하며 GitHub CI가 x86_64, aarch64, s390x 아키텍처 테스트를 수행하지만, OpenBSD의 pledge와 unveil에 해당하는 보안 기능을 맞추는 일이 이식의 핵심 제약임