2011-08-10 4 views
0

Dropbox는 델타 인코딩 알고리즘을 사용하여 두 파일 사이의 차이점을 찾으며, 첫 번째 파일은 수정 된 파일이고 두 번째 파일은 오래된 파일입니다. 그러나 오래된 파일을 저장하는 곳, 새로운 파일 만 가지고 있기 때문에 어떻게 차이를 찾을 수 있는지, 이전 파일은 없었습니다. 먼저 서버에서 파일을 다운로드 한 다음 차이점을 찾는 것은 불가능합니다. 어떤 방법을 사용하고 있습니까?단일 파일에서 델타를 얻는 방법은 무엇입니까?

+0

당신은이에 있어야하는 언어에 대해 열린 마음 것 같다 그것을 좁히려면 신경 써야 할까? –

+0

비슷한 질문을 실행하는 맥락에서이 질문이 있습니까? 그렇다면 우리는 더 많은 정보를 필요로 할 것입니다. –

답변

0

보관 용 직원에 의해 this post에 따르면, 그들은 메모리에 데이터 상주의 종류를 계속 보일 것입니다 :

드롭 박스는 동기화하는 동안 비싼 데이터베이스 액세스를 방지하기 위해 RAM에서 파일에 대한 메타 데이터를 유지합니다. 메타 데이터에는 보관함에있는 파일의 경로, 체크섬, 수정 시간 등이 포함됩니다.이 정보를 더 작게 만들기 위해 최선을 다하고 있으며 메모리 사용을 향상시키기 위해 여러 가지 방법을 사용하고 있습니다. 우리의 기술은 에 한정되지 않고 Python을 다시 작성하고 사용자 정의 메모리 할당자를 작성합니다 :-).

이렇게하려면 사용자가 파일을 보관 용 폴더 폴더에 복사 할 때 델타 차이를 수행 할 수있는 특수 처리기가 있어야합니다. 그 점에 대해 .Net의 FileSystemWatcher 클래스와 같은 것이 자신의 패스 스루 (pass-through) 셸 복사 핸들러와 함께 할 것입니다 (따라서 diff가 완료 될 때까지 파일의 임시 복사본을 보관할 수 있습니다).

또한 참고로 dropbox는 python 및 wxWdigets로 작성되었습니다. 당신이 델타 압축을위한 유용한 찾을 수 있습니다


일부 사이트 :

+0

도움 주셔서 감사합니다. .net에서 파일 해시를 얻고 해시를 비교하는 것은 매우 쉽지만 이전 해시와 새 해시를 비교하여 파일의 바이트를 변경하는 데 도움을 줄 수 있습니까? –

+0

@sukhraj : 변경된 바이트를 얻기 위해 해시를 사용하지 않고 변경을 테스트하기 위해서만 델타 차등 알고리즘을 직접 실행해야합니다. Bindiff는 기본적으로 바이너리의 델타 차등을위한 프로그램이지만 동일한 방법이 다른 파일 유형, 즉 오픈 소스 C (phd 논문 용으로 만들어진 것)에 적용됩니다. 그러나 같은 방법이 다른 파일 유형, 즉 오픈 소스 C (phd 논문 용으로 만들어진 것)에 적용됩니다. – Necrolis

+0

감사합니다. 변경된 바이트를 얻기 위해 VCDiff를 사용할 수 있습니다. 이전 파일과 수정 된 파일 두 개가 있지만 파일을 수정 한 경우 사용할 수 있습니다! –

관련 문제