Como Realizar Backups Manuais com Shadow Copy

O Shadow Copy é uma funcionalidade que foi introduzida inicialmente no Windows Server 2003 e permite gerar uma espécie de imagem (foto) de um estado de um disco. Essa imagem permite que todos os arquivos possam ser lidos, mesmo quando estão abertos por outros processos.

Para garantir que não apenas os arquivos possam ser lidos enquanto abertos por outros processos, mas que também contenham dados íntegros, foram criados os ‘Writers’.

Existem diversos ‘Writers’ que são como drivers que fornecem uma interação do Shadow Copy com aplicações e módulos específicos do sistema. Como por exemplo, existem Writers para SQL Server, Exchange, IIS, Registry, etc. Esses Writers interagem com as respectivas aplicações e seus arquivos de dados, instruindo as aplicações e sistemas a descarregarem os dados que estão em memória para o disco e deixando os arquivos em um estado consistente. Dessa forma, os arquivos podem ser copiados e armazenados como backup, garantindo que estão íntegros e poderão ser utilizados posteriormente.

As funções e funcionalidades do Shadow Copy são utilizadas por diversos softwares de backup.

No entanto, podem existir situações em que você possa precisar controlar manualmente a geração dessas imagens e também a execução de scripts de cópia/backup.

O primeiro passo antes de qualquer coisa é configurar o Shadow Copy no disco em que será realizada a cópia/backup. Isso pode ser realizado utilizando o comando ‘vssadmin’.

C:\>vssadmin add ShadowStorage /for=c: /on=c: /maxsize=unbounded
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.

Successfully added the shadow copy storage association

Nesse comando está sendo configurado o Shadow Copy para o disco C:, indicando que os dados salvos na geração das imagens deverão ser colocados também no disco C:. Também existe a indicação to tamanho máximo que essas imagens podem consumir, nesse caso o termo ‘unbounded’ indica que não há limite para esse armazenamento.

Pode verificar o resultado dessa configuração com o comando abaixo.

C:\>vssadmin list ShadowStorage
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.

Shadow Copy Storage association
For volume: (C:)\?\Volume{6e33dec7-8451-4da8-8b65-fa0d9e1080c4}\
Shadow Copy Storage volume: (C:)\?\Volume{6e33dec7-8451-4da8-8b65-fa0d9e1080c4}\
Used Shadow Copy Storage space: 0 bytes (0%)
Allocated Shadow Copy Storage space: 0 bytes (0%)
Maximum Shadow Copy Storage space: UNBOUNDED (100%)

Estando agora o Shadow Copy configurado, é possível agora utilizar o comando ‘diskshadow’ para realizar as atividades de geração da imagem e execução do backup.

Esse utilitário permite a execução de scripts que pode automatizar de forma controlada o seu processo de backup.

set context persistent
set metadata C:\Diskshadow\Metadata\diskshadow.cab
set verbose on
begin backup
add volume C: alias data_backup
create
expose %data_backup% bkp
exec C:\Scripts\robocopy_backup.cmd
delete shadows exposed bkp
end backup

Os comandos acima podem ser colocado em um arquivo de texto e passados como parâmetro para o diskshadow com o switch ‘-s’.

C:\> diskshadow -s script_backup.txt

Dentre os comando que estão presente no script de exemplo acima, posso citar 2 que realmente fazem a mágica acontecer.

O comando ‘expose’ permite que a imagem gerada seja exposta para ser acessada por outro processo. Essa exposição pode ser feita por uma nova letra de unidade lógica, por um nome de compartilhamento, ou por um ponto de montagem de diretório. Caso o script de backup seja executado à partir de outra máquina, a opção de nome de compartilhamento é a mais indicada.

Já o comado ‘exec’ permite executar um script qualquer, que por sua vez pode executar diversas atividades, inclusive as cópias de backup.

Depois que o script de backup terminar, basta usar os comandos para remover a imagem de Shadow Copy criada e finalizar a sessão de backup.