Partilhar via


Trabalhando com arquivos parciais

Às vezes, é útil fazer backup e restaurar apenas seções de arquivos. O VSS fornece mecanismos de para arquivos parciais, que, caso os solicitantes os suportem, permitem que os gravadores definam backups e restaurações parciais de arquivos.

Operações parciais de arquivos são freqüentemente de maior utilidade para gravadores que mantêm arquivos muito grandes, apenas uma pequena fração dos quais muda entre as operações de backup. Sendo esse o caso, é frequentemente útil copiar apenas a seção que mudou para mídia de backup. Por esse motivo, as operações parciais de arquivos são normalmente, mas não exclusivamente, usadas para dar suporte a operações incrementais de backup e restauração.

Se um autor quiser implementar uma operação de arquivo parcial, ele usará CVssWriter::IsPartialFileSupportEnabled para determinar se o solicitante com quem está a trabalhar suporta a operação.

Se o solicitante oferecer suporte a operações parciais de arquivo e adicionar o componente que gerencia o arquivo (ou o componente que define o conjunto que contém o arquivo) ao Documento de componentes de backup, um escritor indicará quais seções do arquivo salvar (normalmente ao lidar com um evento PrepareForBackup ou PostSnapshot ) chamando IVssComponent::AddPartialFile.

Além de um caminho e nome de arquivo, o gravador fornece o intervalo, informações de metadados opcionais para IVssComponent::AddPartialFile.

As informações de intervalo são fornecidas como uma cadeia de caracteres que contém um dos seguintes:

  • Pares de deslocamentos no arquivo para backup (em bytes) e o comprimento da seção para backup (em bytes), o deslocamento e o comprimento separados por dois pontos e cada par separado por uma vírgula, por exemplo, Offset1**:Length1,** Offset2**:**Length2.

    Cada valor é um inteiro de 64 bits (em formato hexadecimal ou decimal) especificando um deslocamento de bytes e comprimento em bytes, respectivamente.

  • O caminho completo, incluindo o nome do arquivo, no sistema atual de um arquivo de intervalos binários contendo o seguinte:

    • O número (expresso como um inteiro de 64 bits) de intervalos de arquivos distintos contidos no arquivo
    • Cada intervalo expresso como um par de inteiros de 64 bits: o primeiro membro do par é o deslocamento para o arquivo que está sendo feito backup (em bytes) e o segundo membro é o comprimento dos dados a serem copiados (em bytes)

Se um escritor usar um ficheiro de intervalos para especificar uma operação de ficheiro parcial, o solicitante tem que garantir que o backup desse ficheiro seja feito (mesmo que o ficheiro não seja necessariamente parte do conjunto de backup padrão) ou que as informações de intervalos sejam preservadas na mídia de backup de alguma outra forma. Se as informações do ficheiro de intervalos não forem submetidas a backup, a restauração do ficheiro parcialmente submetido a backup será impossível.

O escritor também pode adicionar uma sequência de texto contendo metadados. Esses metadados podem estar em um formato específico do gravador porque se destinam a permitir que o gravador valide quaisquer restaurações futuras.

Com essas informações, um solicitante de suporte pode executar um backup parcial de arquivos.

Como exemplo, considere um arquivo grande cujo cabeçalho (bytes 64-512) contenha uma contagem de registros e outras informações atualizadas com freqüência, e cujos dados mais recentes sejam encontrados nos últimos 65536 bytes do arquivo — bytes 0x1239E8577A a 0x1239E7577A.

Um escritor pode especificar uma lista de intervalos como a cadeia "64:448,0x1239E8577A:65536."

Na restauração, e antes de realmente executar uma operação de restauração, um requerente deve verificar se algum arquivo requer suporte parcial de arquivos.

Para fazer isso, o solicitante primeiro itera sobre os gravadores com componentes armazenados em seu documento de componentes de backup usando IVssBackupComponents::GetWriterComponentsCount e IVssBackupComponents::GetWriterComponents.

A interfaceIVssBackupComponents::GetWriterComponents é usada para retornar instâncias da interfaceIVssWriterComponentsExt, que fornecem IVssWriterComponentsExt::GetComponent e IVssWriterComponentsExt::GetComponentCount, que permitem ao solicitante obter IVssComponent instâncias.

Isso permite que um solicitante obtenha informações sobre os arquivos parcialmente copiados para participar de uma restauração usando IVssComponent::GetPartialFileCount e IVssComponent::GetPartialFile para a instância de IVssComponent correspondente ao componente que gerencia o arquivo (ou o componente que define o conjunto de componentes que contém o arquivo).

Se a operação de arquivo parcial foi controlada por um arquivo de intervalos, esse arquivo deve ser restaurado antes de copiar os dados de volta para o disco. Pode acontecer que o solicitante precise copiar o arquivo de intervalos de volta para um novo local no disco. Nesse caso, indica que o fez por meio do IVssBackupComponents::SetRangesFilePath.

Em seguida, o solicitante continua a copiar os dados para os locais apropriados no destino de restauração já no disco.

Um escritor (ao manipular um evento PostRestore), examinando IVssComponent::GetFileRestoreStatus para os ficheiros indicados por IVssComponent::GetPartialFile, determina se a operação de ficheiro parcial foi bem-sucedida. O autor deve sempre tentar verificar a precisão desta restauração usando as informações de deslocamento e quaisquer metadados incluídos no Documento de Componentes de Backup.

Se o solicitante tiver tido que restaurar o arquivo de intervalos para um novo local, o VSS atualizará essas informações para que o caminho retornado pelo IVssComponent::GetPartialFile esteja correto.