2011-02-13 18 views
5

파일 백업을 버전 관리하거나 최적화 할 때 수정 된 델타 또는 데이터 만 사용하는 것이 좋습니다.Java에서 파일 델타/버전 관리를위한 기존 솔루션

처음에는 간단한 생각처럼 들리지만 수정되지 않은 데이터가 어디에서 끝나고 새로운 데이터가 시작되는지는 어려운 작업으로 보입니다.

이미 이와 비슷한 또는 효율적인 파일 비교 알고리즘을 수행하는 기존 프레임 워크가 있습니까?

답변

3

XDelta은 자바가 아니지만 어쨌든 살펴볼 가치가 있습니다. Java version가 있지만 얼마나 안정적인지는 알 수 없습니다.

+1

javaxdelta는 잘 작동합니다. 디렉토리 diffs에 대해서는 프로덕션에서 ([wrapper] (https://github.com/alexkasko/delta-updater)와 함께) 사용하고 있습니다. xdelta는 더욱 발전되었지만 기본 및 GPL입니다. – alexkasko

+0

알렉스, 고마워. –

1

차이점을 기반으로하는 저장 방식에 대해 설명하는 것처럼 들립니다. 대부분의 소스 코드 제어 시스템은 그러한 시스템을 사용하여 스토리지 요구 사항을 최소화합니다. * nix "diff"명령은 사용자가 직접 구현해야하는 데이터를 생성 할 수 있습니다.

+0

을 : 여기

는 Bsdiff 문서를 찾아 무료 Bsdiff을 다운로드 할 수있는 사이트입니다. 이것은 동일한 파일의 개별 버전을 유지하는 것이 공간을 상당히 빨리 먹을 수 있기 때문에 필요한 저장소를 최소화하는 것입니다. 또한 백업 구성표에 유용합니다. –

3

직접 롤링하는 대신 오픈 소스 버전 제어 시스템 (예 : Subversion)을 활용하는 것이 좋습니다. 델타 버전 관리 알고리즘보다 훨씬 많은 것을 얻을 수 있습니다.

http://code.google.com/p/google-diff-match-patch/

그래도 난 이진 차이점에 대한 라이브러리를 모르는 :

+0

소스 포지는 버전 제어를 사용하는 사이트입니다. 버전 관리 시스템의 경우 Subversion, CVS, git, mercurial 등을 사용할 수 있습니다. –

+0

@Peter : 자정 이후에 질문에 대답해서는 안됩니다. 감사합니다. SVN을 의미했습니다. –

+0

SVN은 개발 용도가 아닌 다양한 용도로 사용됩니다. 프로덕션 환경에서 구성 파일을 배포하고 버전을 사용하기 위해이 파일을 사용합니다. –

1

여기에 두 개의 일반 텍스트 파일 사이의 차이점을 계산할 수있는 자바 라이브러리입니다. 'java binary diff'에 대한 검색을 시도하십시오.

+0

바이너리 diff는 내가 찾고있는 검색어입니다. 팁 고마워. 적합한 프레임 워크를 찾으면 다시 게시됩니다. –

1

제 의견으로는 Bsdiff 도구가 바이너리 파일을위한 최상의 선택입니다. 그것은 접미사 정렬 (Larsson과 Sadakane의 qsufsort)을 사용하고 실행 파일이 어떻게 변하는지를 이용합니다. Bsdiff는 Colin Percival에 의해 C++로 작성되었습니다. Bsdiff로 만든 diff 파일은 일반적으로 Xdelta에서 만든 파일보다 작습니다.

Bsdiff는 bzip2 압축 알고리즘을 사용합니다. Bsdiff로 만든 바이너리 패치는 다른 압축 알고리즘 (WinRAR 아카이버와 같은)을 사용하여 압축 할 수 있습니다. 정확한 http://www.daemonology.net/bsdiff/