2009-06-30 7 views
6

저는 약 80 기가의 파일 묶음의 스냅 샷을 만드는 빠르고 간단하지는 않은 방법을 찾고 있습니다. 여기서 문제는 많은 파일이 약 1GB 크기라는 것입니다.거대한 파일의 버전 제어 시스템?

이 유형의 가장 적합한 무료 버전 제어 시스템은 무엇입니까?

나는 ZFS가 옵션이라는 것을 알고 있지만 우선 뭔가 다른 것을 시도하려고한다.

+0

아스키 또는 바이너리? – Johan

+0

바이너리 - 아스키와 바이너리를 구별하는 알고리즘을 가진 최신 버전 제어 시스템에 대해서는 잘 모릅니다. 나는 그것을 시험해보고 나의 결과를 여기에 올릴 것이다. –

+0

초기 커밋이 사용 중이고 file : // 프로토콜을 사용하면 Subversion에서 평균 1.5MB/초가 전송됩니다. 꽤 천천히. –

답변

6

Subversion은 대부분의 선량한 침착하여> 기가 바이트 파일을 처리하지만, 많은 큰 변화가있는 경우

Subversion Best practices

이 큰 파일의 부분을 가지고 ... 차이점의 생성 시간이 걸릴 것으로 예상됩니다 :

Subversion의 멋진 기능은 디자인 상으로는 처리 할 수있는 파일의 크기가 인데 제한이 없습니다. 파일은 서브넷 클라이언트와 서버 사이의 방향 모두에서 "streamily"로 전송되며 네트워크의 양면에 작은 양의 메모리를 사용합니다.

물론 실제 고려해야 할 문제가 많이 있습니다. 킬로바이트 크기 범위의 파일 (예 : 일반적인 소스 코드 파일)에 대해 걱정할 필요가 없지만 큰 파일을 커밋하면 많은 시간과 공간 (예 : 또는 수백 메가 바이트 인 파일)을 걸릴 수 있습니다.).

먼저 Subversion 작업 복사본에는 .svn/text-base/ 영역에 모든 버전 제어 파일의 깨끗한 복사본이 저장됩니다. 즉, 작업 복사본은 원래 데이터 집합과 같이 디스크 공간이 두 번째 이상인 입니다. 그 외에도 Subversion 클라이언트는 파일을 커밋하는 알고리즘 (현재는 조정할 수 없음)을 따르고 있습니다.

. 파일을 .svn/tmp /에 복사합니다 (잠시 시간을 내고 임시로 여분의 디스크 공간을 사용합니다))

. tmpfile과 원시 사본간에 이진 diff를 수행하거나 새로 추가 된 경우 tmpfile과 빈 파일 사이에서 이진 diff를 수행합니다. 이 새로 추가 된 경우. (비록 작은 데이터의 양이 궁극적으로 네트워크를 통해 전송 될지라도 계산에 매우 오랜 시간이 걸릴 수 있습니다)

. 파일의 크기에 이론상의 제한은 없지만/서버에 DIFF는 다음을 .svn/텍스트베이스로 TMPFILE 이동

그래서

전송, 당신은 은 매우 큰 파일이 인식해야합니다 귀하의 클라이언트가 떨어져 chugs 동안 환자 기다리는 꽤 많은 비트가 필요할 수 있습니다. 그러나 CVS와 달리 큰 파일은 서버를 무력화 시키거나 다른 사용자에게 영향을 미치지 않습니다.

+3

우리는 약 2 주 동안이 목적을 위해 지금 파괴를 사용 해왔다. 130,000 개의 파일에 걸쳐 약 80GB의 데이터 세트에 대한 체크 인은 매일 밤 약 1 시간 동안 체크인해야합니다. 일일 델타는 50MB입니다. 데이터 세트에서 가장 큰 단일 파일은 800MB입니다. –

+0

멋진 물건들, 벤. 도움이 되셨 다니 다행이라고 생각합니다. –

3

실제로는 Monotone을 시도해 볼 수 있습니다. 당신이 찾고있는 것을 찾을 수 있습니다.

+1

monotone summit을 응시하면서 우리는 모노톤 자체를 사용하여 2GB 상당의 사진을 교환했으며 매우 빨랐습니다. – lapo

관련 문제