2010-01-08 5 views
2

전기를 뽑아서 연결이 끊긴 컴퓨터에 구성 파일을 저장할 수 있어야합니다.) 기본 WinApi를 사용하여 구성 데이터 (WriteFile)를 저장하고 있습니다. 컴퓨터가 연결되어 있지 않으면 작동합니다 ;), 때로는 파일이 전혀 저장되지 않습니다. .백업 구성 파일

나는이 개 솔루션의 생각 :

1) 트랜잭션 NTFS의 API (예 : CreateFileTransacted())하지만,이 점은 비스타에서만 작동하고 NTFS가 존재하는 나는 대부분의 경우

을에서 사용할 수 없습니다

2), (20 개)의 백업 복사본을 말하고 당신이 내 문제에 대한 다른 솔루션을 알고 있다면 손상된 구성 파일이

을 감지되었을 때 (응용 프로그램 시작에 복원 %의 APPDATA % 디렉토리에 구성 파일의 백업 복사본을 만들려면 주요 문제는 그것을 꽂아서 기계를 끄는 것입니다) 알려주십시오. 고맙습니다.

+0

... UPS는 어떻습니까? –

+0

아니요, 유일한 소프트웨어 솔루션입니다 ... –

+0

호기심에서 벗어난이 기계들은 왜 그런 식으로 연결이 끊어 졌습니까? –

답변

2

백업 사본 20 장이 필요하지 않습니다. 마지막 복사본 인 1 개만 필요합니다. 자, 클라이언트가 실제로 config 파일을위한 기본적인 버전 시스템을 요구한다면 그것은 다른 이야기입니다. 그러나 좋은 구성 파일을 가지려면 단지 1 개의 백업 만 있으면됩니다.

지금, 여기 내 임베디드 프로젝트를 수행하는 데 사용되는 작업은 다음과 같습니다

  1. 는 설정 파일의 해시를 계산하고 파일에 저장합니다. 가장 쉬운 방법은 코멘트의 끝에 파일의 끝에 추가하는 것입니다. 이전에는 crc32를 사용했지만 최근에는 SHA1을 사용했습니다. 이는 설정 파일을 전송/저장하기 바로 전에 config-uploader 도구에 의해 자동으로 수행 될 수도 있습니다.

  2. 구성 파일을 열 때 해시를 추출하고 파일에서 계산 된 값과 비교합니다 (해시가 파일에서 제거 된 후 계산 됨). 해시가없는 경우 파일이 불완전합니다. 해시가 동일하지 않으면 파일이 손상됩니다. 두 경우 모두 이전 파일을 사용하십시오.

  3. 올바른 & 올바른 구성 파일이 확인되면 이전 구성 파일을 대체 할 수 있습니다. 이를 위해 OS의 이름 변경 작업을 사용하십시오. 대부분의 현대 파일 시스템에서는 일반적으로 원 자성이므로 실패한 이름 바꾸기는 이전 파일을 망가 뜨리지 않습니다.

이것은 내가 수년 동안 사용해 온 가장 강력한 시스템입니다. 기본적으로 비트 토런트가하는 것입니다.