부분 파일 작업

파일의 섹션만 백업하고 복원하는 것이 유용한 경우도 있습니다. VSS는 요청자가 이를 지원하는 경우 기록기가 부분 파일 백업 및 복원을 지정할 수 있도록 하는 부분 파일 메커니즘을 제공합니다.

부분 파일 작업은 대용량 파일을 유지 관리하는 기록기에 가장 많이 사용되는 경우가 많으며, 그 중 극히 일부만 백업 작업 간에 변경됩니다. 이 경우 백업 미디어로 변경된 섹션만 복사하는 것이 유용한 경우가 종종 있습니다. 이러한 이유로 부분 파일 작업은 일반적으로 증분 백업 및 복원 작업을 지원하는 데 사용되지만 단독으로 사용되지는 않습니다.

기록기가 부분 파일 작업을 구현하려는 경우 CVssWriter::IsPartialFileSupportEnabled 를 사용하여 작업 중인 요청자가 작업을 지원하는지 여부를 확인합니다.

요청자가 부분 파일 작업을 지원하고 파일을 관리하는 구성 요소(또는 파일이 포함된 구성 요소 집합을 정의하는 구성 요소)를 Backup 구성 요소 문서에 추가하는 경우 기록기는 IVssComponent::AddPartialFile을 호출하여 저장할 파일의 섹션(일반적으로 PrepareForBackup 또는 PostSnapshot 이벤트를 처리하는 동안)을 나타냅니다.

기록기는 경로 및 파일 이름 외에도 범위, 선택적 메타데이터 정보를 IVssComponent::AddPartialFile에 제공합니다.

범위 정보는 다음 중 하나를 포함하는 문자열로 제공됩니다.

  • 백업할 파일의 오프셋 쌍(바이트)과 백업할 섹션의 길이(바이트) , 콜론으로 구분되는 오프셋 및 길이, 쉼표로 구분된 각 쌍(예: Offset1**:Length1,** Offset2**:**Length2).

    각 값은 각각 바이트 오프셋과 길이를 지정하는 64비트 정수(16진수 또는 10진수 형식)입니다.

  • 다음을 포함하는 이진 범위 파일의 현재 시스템에서 파일 이름을 포함한 전체 경로입니다.

    • 파일에 포함된 고유 파일 범위의 숫자(64비트 정수로 표시됨)
    • 64비트 정수 쌍으로 표현되는 각 범위: 쌍의 첫 번째 멤버는 백업 중인 파일의 오프셋(바이트)이고 두 번째 멤버는 백업할 데이터의 길이(바이트)입니다.

기록기가 범위 파일을 사용하여 부분 파일 작업을 지정하는 경우 요청자는 이 파일이 백업되거나(파일이 반드시 기본 백업 집합의 일부가 아니더라도) 백업 미디어에 범위 정보가 다른 방식으로 유지되도록 보장해야 합니다. 범위 파일의 정보가 백업되지 않으면 부분적으로 백업된 파일을 복원할 수 없습니다.

작성기는 메타데이터를 포함하는 문자열을 추가할 수도 있습니다. 이 메타데이터는 기록기에서 향후 복원의 유효성을 검사할 수 있도록 하기 위해 작성기별 형식일 수 있습니다.

이 정보를 사용하면 지원 요청자가 부분 파일 백업을 수행할 수 있습니다.

예를 들어 헤더(바이트 64-512)에 레코드 수 및 기타 자주 업데이트되는 정보가 포함되어 있고 파일의 마지막 65536바이트(0x1239E7577A 0x1239E8577A 바이트)에서 가장 최근 데이터를 찾을 수 있는 큰 파일을 생각해 보세요.

작성기는 범위 목록을 문자열 "64:448,0x1239E8577A:65536"으로 지정할 수 있습니다.

복원 시 및 실제로 복원 작업을 수행하기 전에 요청자는 일부 파일 지원이 필요한 파일이 있는지 확인하기 위해 검사 합니다.

이를 위해 요청자는 먼저 IVssBackupComponents::GetWriterComponentsCount 및 IVssBackupComponents::GetWriterComponents 를 사용하여 백업 구성 요소 문서에 저장된 구성 요소를 사용하여 기록기를 반복 합니다.

IVssBackupComponents::GetWriterComponents 인터페이스는 IVssWriterComponentsExt::GetComponent 및 IVssWriterComponentsExt::GetComponentsExt::GetComponentCount를 제공하여 요청자가 IVssComponent 인스턴스를 가져올 수 있도록 하는 IVssWriterComponentsExt 인터페이스의 인스턴스를 반환하는 데 사용됩니다.

이렇게 하면 요청자가 파일을 관리하는 구성 요소(또는 파일이 포함된 구성 요소 집합을 정의하는 구성 요소)에 해당하는 IVssComponent의 instance 대해 IVssComponent::GetPartialFileCountIVssComponent::GetPartialFile을 사용하여 복원에 참여할 부분적으로 백업된 파일에 대한 정보를 가져올 수 있습니다.

부분 파일 작업이 범위 파일에 의해 제어된 경우 데이터를 디스크에 다시 복사하기 전에 해당 파일을 복원해야 합니다. 요청자가 범위 파일을 디스크의 새 위치로 다시 복사해야 할 수 있습니다. 이 경우 IVssBackupComponents::SetRangesFilePath를 통해 수행되었음을 나타냅니다.

그런 다음 요청자는 디스크에 이미 있는 복원 대상의 적절한 위치에 데이터를 복사합니다.

기록기(PostRestore 이벤트를 처리하는 동안)는 IVssComponent::GetPartialFile으로 표시된 파일에 대해 IVssComponent::GetFileRestoreStatus를 검사하여 부분 파일 작업이 성공했는지 확인합니다. 기록기는 항상 백업 구성 요소 문서에 포함된 오프셋 정보 및 메타데이터를 사용하여 이 복원의 정확성을 확인해야 합니다.

요청자가 범위 파일을 새 위치로 복원해야 하는 경우 VSS는 IVssComponent::GetPartialFile 에서 반환된 경로가 올바르도록 이 정보를 업데이트합니다.