2009-07-13 6 views
0

PC의 파일 및 폴더를 자동 또는 수동으로 온라인 백업하는 응용 프로그램의 개발 작업을하고 있습니다. 현재 서버에서 최신 버전의 파일 만 보관하고있었습니다. 이제 버전 관리를 구현하여 변경 사항 만 온라인 서버로 전송할 수 있고 사용자는 사용 가능한 버전을 다운로드 할 수 있어야합니다. 파일을 Backup Server에 저장하십시오.은 온라인 백업 도구에서 버전 관리를 구현해야합니다.

중복 제거를 수행해야합니다. 얘들 아, 고정 블록 크기를 사용하여 수행 할 수 있지만 각 버전 백업과 함께 CRC 정보가있는 파일을 전송하는 오버 헤드에 직면 할 수는있다.

저는 그러한 기술에 대해 한 번도 다뤄 본 경험이 없습니다. 많은 고통없이이 기능을 응용 프로그램에 포함시킬 수있는 방법이 있는지 알고 싶습니다. 타사 도구가 동일한 작업을 수행하는 데 도움이됩니까? 알려주시겠습니까?

참고 : FTP 프로토콜을 사용하여 데이터를 전송하고 있습니다.

답변

1

비슷한 것을하는 dump이라는 프로그램이 있지만 파일보다는 파일 시스템 블록에서 작동합니다. rsync도 관심의 대상이 될 수 있습니다.

여러 버전의 많은 수의 블록과이 블록이 원본 파일의 다양한 버전에 어떻게 들어갈 수 있는지 추적해야하므로이 정보를 추적 할 수있는 일종의 데이터베이스가 필요합니다. 주어진 파일에서 어떤 블록이 전송되어야 하는지를 결정하기 위해 질의한다. 또한 파일의 시작 부분에 무언가를 추가하면 순진한 블로킹 및 차이 스키마를 사용하는 경우 모든 블럭이 "새로운"상태가됩니다.

이렇게하려면 매우 복잡 할 것입니다. 이미 사용 가능한 솔루션을 철저히 조사하고, 스스로 작성해야한다고 결정한 경우 설계의 이점을 신중하게 고려해야합니다.

+0

그래, 나는 지난주부터 연구를하고있다. 내가 해결책을 생각해 냈다. 나는 파일을 고려해 현명하게 차단했다. 그리고 모든 버전에서 Structure_string (이전 버전에서 접근 할 수 있도록 블록의 가용성을 추적하기 위해) + CRCs의 컴파일 된 목록 이 목록을 다운로드하여 현재 버전 목록과 비교하여 차이점을 찾아 낼 수 있습니다. 내 접근법이 맞는지, 이것이 실제 세계에서 어떻게 구현되는지 확인해야합니까? – Sumeet

+0

나는 그것이 일할 수 있다고 확신하지만, 이상적이지는 않습니다. 특정 유형의 변경으로 인해 전체 파일 (GB 일 수 있음)을 1 바이트 변경으로 전송하게됩니다. 블록 크기에 따라 서버에 수천 또는 수백만 개의 중복 블록 (각 파일?)이있을 수 있으므로 디렉토리 목록이 쓸데없이 느려질 수 있습니다. rsync 페이지의 "델타 인코딩"링크를 살펴 보겠습니다. 이렇게하면 실제로 변경된 파일 부분 만 보낼 수 있습니다. 이 작업을 효율적으로 진행하기위한 많은 작업이 이루어졌습니다. 덤프와 rsync 코드도 살펴볼 수 있습니다. –

+0

Rsync 코드 작업을 시작했습니다. 어떻게 생각해? 도움이 될까요? – Sumeet

관련 문제