Não tenho certeza do que você quer dizer com isso:
Gives me a backup that is suited for a full system restore or partial
system restore (ruling out most imaging software even if they could
work while the system is booted via some sort of shadow copy voodoo)
Mas posso dar praticamente tudo o mais que você solicitou com VShadow.exe (encontrado no Windows SDK ) e strarc.exe . O strarc é open source, embora eu nunca tenha me preocupado em procurar sua origem.
Aqui está a receita:
- Crie uma cópia de sombra para obter um estado consistente. Para fazer isso, execute
VShadow.exe -p volumename
, em que volumename
é o volume que você deseja fazer backup. Os exemplos são C:\
, C:\Mounts\D
(se esse for um ponto de montagem para um volume) ou \?\Volume{edbed95e-7e8d-11d8-9d01-505054503030}
para um nome de volume persistente. O VShadow fará o que quiser, mas no final, você terá uma linha com SNAPSHOT ID
. Pegue o GUID a partir disso.
- Atribuir uma letra de unidade ao instantâneo. Execute
VShadow.exe -el=ShadowCopyId,UnusedDriveLetter:
, em que ShadowCopyId
é o ID do instantâneo obtido na última etapa. O UnusedDriveLetter, é claro, é uma letra de unidade não utilizada.
- Execute o backup. Execute
strarc -cjd:UnusedDriveLetter:\ 1>MyBackup.strarc 2>MyBackup.err.txt
. UnusedDriveLetter
deve ser o mesmo da última etapa, pois isso indica ao strarc por onde começar seu backup.
- Restaurar o backup. Execute
strarc -xjd:Destination MyBackup.strarc
, em que Destination
é auto-evidente.
O strarc não compacta seus arquivos, portanto, se você quiser fazer isso, alimente sua saída com seu programa de compressão de fluxo favorito, como bzip2 ou gzip. É -z
opção permite que você especifique.
Uma ressalva é que a Microsoft acha que a opção -p
do VShadow para expor a captura instantânea está disponível apenas para os sistemas operacionais da classe Server. Descobri que isso é realmente errado, pois consegui criar uma letra de unidade com a opção -p
no Windows 7 Enterprise. Funcionou muito bem.
Observe que o strarc usa a API de backup do NT (e tem suporte para nomes de caminho NT muito longos), mas não habilita o SeBackupPrivilege. Isso significa que você só pode fazer backup de coisas que você tem acesso (e você, certo? Você é o administrador, certo?). Você poderia forçar isso com o ProcessHacker de código aberto; ou, como é open source, você pode adicionar uma opção para ativar o SeBackupPrivilege. Se você fizer o último, eu encorajo você a compartilhar. :)
Referências: