지정된 대상을 다루기
지시된 대상 메커니즘은 사용자가 복원 시 파일을 다시 매핑할 수 있게 합니다. 이렇게 하면 작성자가 다음을 수행할 수 있습니다.
- 새 대상 위치를 지정하십시오(요청자의 IVssBackupComponents::AddNewTarget에 해당).
- 특히 부분 파일 메커니즘을 사용하여 파일을 백업한 경우 파일의 필요한 부분만 디스크에 복원하여 디스크 공간을 되찾습니다.
- 현재 요구 사항에 맞게 파일 형식을 변경합니다.
지정된 대상 작업과 함께 사용할 파일에는 VSS_RT_DIRECTED 복원 대상이 있어야 합니다.
요청자가 지시된 대상 작업을 지원할 수 있다는 설정이 설정되면 기록기(PreRestore 이벤트를 처리하는 동안)는 파일을 관리하는 구성 요소(또는 파일이 포함된 구성 요소 집합을 정의하는 구성 요소)에 해당하는 IVssComponent 인스턴스에 대해 IVssComponent::AddDirectedTarget 사용하여 복원 시 파일을 다시 매핑하는 방법을 정의합니다.
IVssComponent::AddDirectedTarget을 사용하여, 기록자는 파일의 백업에 사용되는 파일 이름 및 경로, 복원 경로의 파일 이름 및 경로(이러한 값은 원래 파일 이름 및 경로와 같을 수 있음), 그리고 원본 파일 범위와 대상 파일 범위를 지정합니다.
부분 파일 작업과 마찬가지로 범위 목록은 백업할 파일의 오프셋 (바이트)과 복원할 섹션의 길이 (바이트)로 구성된 쌍입니다. 오프셋과 길이는 콜론으로 구분되며, 각 쌍은 쉼표로 구분됩니다: Offset1**:Length1,** Offset2**:**Length2. 각 값은 16진수 또는 10진수 형식의 64비트 정수입니다.
지시된 대상 메커니즘을 사용하여 요청자가 파일을 새 위치로 복원하도록 해야 하는 경우 원래 파일 이름 및 경로와 새 파일 이름 및 경로를 사용하여 IVssComponent::AddDirectedTarget 호출하고, 오프셋이 0이고 전체 파일 크기의 길이가 같은 원본 대상 범위를 지정합니다.
예를 들어 작가가 C:\WriterData\Index.dat 파일을 C:\WriterData\OldIndex.dat로 복원해야 하며 파일 크기가 200KB인 경우, 원본과 대상 범위 문자열은 "0:204880"입니다.
부분적으로 백업된 큰 파일을 다시 매핑하기 위해 요청자는 파일을 백업하는 데 사용되는 원본 범위와 파일 크기를 줄이는 대상 범위를 사용합니다. 원본 범위 정보는 파일을 관리하는 구성 요소(또는 파일이 포함된 구성 요소 집합을 정의하는 구성 요소)에 해당하는 IVssComponent 인스턴스에 IVssComponent::GetPartialFile 사용하여 가져올 수 있습니다.
부분적으로 백업된 파일이 처음에 헤더가 있는 큰 파일인 경우 바이트 64-512에는 레코드 수 및 기타 자주 업데이트되는 정보가 포함되며, 파일의 마지막 65536바이트에서 가장 최근 데이터를 찾을 수 있는 바이트(0x1239E8577A 0x1239E7577A 바이트)는 원본 범위 목록을 문자열로 지정할 수 있습니다. "64:448,0x1239E8577A:65536."
기록기가 복원된 파일을 다시 매핑하여 헤더 및 최신 데이터만 포함하려는 경우 범위 목록은 "0:488,488:65536" 문자열일 수 있습니다.
실제로 복원 작업을 수행하기 전에 요청자는 지시된 대상 지원이 필요한 파일이 있는지 확인해야 합니다.
이를 위해 요청자는 먼저 백업 구성 요소 문서에서 저장된 구성 요소와 관련된 기록기를 반복하고, IVssBackupComponents::GetWriterComponentsCount 및 IVssBackupComponents::GetWriterComponents함수를 사용합니다.
IVssBackupComponents::GetWriterComponents 인터페이스는 IVssWriterComponentsExt 인터페이스의 인스턴스를 반환하는 데 사용됩니다. IVssWriterComponentsExt::GetComponent 및 IVssWriterComponentsExt::GetComponentCount 메서드를 제공하여 요청자가 IVssComponent 인스턴스를 가져올 수 있도록 합니다.
이렇게 하면 요청자가 IVssComponent::GetDirectedTargetCount 및 IVssComponent::GetDirectedTarget를 사용하여 파일을 관리하는 구성 요소(또는 파일을 포함하는 구성 요소 집합을 정의하는 구성 요소)에 해당하는 IVssComponent 인스턴스에 대해 지시된 대상 후보를 가져올 수 있습니다.