Cenário:
Fazendo uma migração de servidor do antigo Server 2008 R2 para o novo Server 2016, seguindo este guia de falha do servidor: Migração do servidor de arquivos usando Robocopy
Após a conclusão do Robocopy, habilite a desduplicação no Server 2016 para o volume copiado e use o PowerShell para iniciar a desduplicação manualmente. Após muitas horas, ele conclui e recupera cerca de 25% do espaço em disco.
Execute o Robocopy novamente para copiar qualquer coisa que possa ter sido perdida na cópia inicial, como uma verificação final do novo servidor.
.... mas o Robocopy (executado a partir do Server 2016) não entende a desduplicação e, em vez disso, procede à lixeira do chunkstore de desduplicação.
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : Sunday, July 8, 2018 12:10:02 PM
Source : \\SERVER-2008\e$\
Dest : \\SERVER-2016\e$\
Files : *.*
Options : *.* /TEE /S /E /COPYALL /PURGE /MIR /ZB /NP /MT:32 /R:1 /W:10
------------------------------------------------------------------------------
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\
*EXTRA File 253504 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\DedupFileList.1
*EXTRA File 253504 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\DedupFileList.2
*EXTRA File 28 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\stamp.dat
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\00010000\
*EXTRA File 196608 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\00010000\00000046.00.RB
*EXTRA File 106496 \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\COW\00010000\00000048.00.RB
[.......]
*EXTRA File 30.3 m \\SERVER-2016\e$\System Volume Information\Dedup\ChunkStore\{B7E1F3A4-AAD9-4449-9DF7-5489421C9EC5}.ddp\Stream\000f0000.00000002.ccc
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\Logs\
*EXTRA File 29.7 m \\SERVER-2016\e$\System Volume Information\Dedup\Logs\00000001.kmchange.log
*EXTRA File 999.8 m \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.10.archive.etl
*EXTRA File 1000.0 m \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.11.archive.etl
*EXTRA File 735.5 m \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.12.archive.etl
*EXTRA File 999.8 m \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.1.9.archive.etl
*EXTRA File 1.3 m \\SERVER-2016\e$\System Volume Information\Dedup\Logs\changes.optimization.2.1.archive.etl
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\Settings\
*EXTRA File 76 \\SERVER-2016\e$\System Volume Information\Dedup\Settings\Dedup.00.cfg
*EXTRA File 76 \\SERVER-2016\e$\System Volume Information\Dedup\Settings\Dedup.01.cfg
*EXTRA File 2228 \\SERVER-2016\e$\System Volume Information\Dedup\Settings\dedupConfig.01.xml
*EXTRA File 2228 \\SERVER-2016\e$\System Volume Information\Dedup\Settings\dedupConfig.02.xml
*EXTRA File 0 \\SERVER-2016\e$\System Volume Information\Dedup\Settings\VolumeJobLock.bin
*EXTRA Dir -1 \\SERVER-2016\e$\System Volume Information\Dedup\State\
*EXTRA File 2982 \\SERVER-2016\e$\System Volume Information\Dedup\State\chunkStoreStatistics.xml
*EXTRA File 2592 \\SERVER-2016\e$\System Volume Information\Dedup\State\dedupStatistics.xml
*EXTRA File 11.5 m \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceBitmap.tmp
*EXTRA File 1.0 g \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceContainer.ccc
*EXTRA File 46.0 m \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceDeleteLogs.tmp
*EXTRA File 1.0 m \\SERVER-2016\e$\System Volume Information\Dedup\State\GCReservedSpaceFileList.tmp
*EXTRA File 4096 \\SERVER-2016\e$\System Volume Information\Dedup\State\GroupCommitFlushControl0.bin
*EXTRA File 2066 \\SERVER-2016\e$\System Volume Information\Dedup\State\optimizationState.xml
[......]
Eu abortei momentos depois de ver isso voando no log e reconhecer o que estava acontecendo. Mas o dano já está feito, os dados no novo servidor desduplicado foram instantaneamente corrompidos pelo Robocopy ao invadir \System Volume Information. A nova partição da unidade do servidor foi formatada e copiada novamente do Server 2008.
Existe uma maneira segura de usar o Robocopy para que ele não toque nos dados do volume de desduplicação?
Além disso, tenho uma nova preocupação .. se o Robocopy pode destruir um volume desduplicado, o que mais não é seguro usar com um volume desduplicado, que vê através dele e pode destruir os dados subjacentes que devem ser acessíveis apenas pelo servidor? (provavelmente deve ser uma pergunta separada ..)
O
System Volume Information
diretório deve ser excluído usando a opção /XD. Provavelmente é uma boa ideia excluir outros diretórios ocultos/do sistema, como$RECYCLE.BIN
.Duas opções de linha de comando que foram usadas levam a isso:
/MIR
e/ZB
. Como a documentação (robocopy /???
) descreve:É a combinação que você fez:
/MIR
irá excluir (como apontado quando você executarobocopy
sem argumentos) e o "Modo de backup" anula a maioria das permissões para poder ler arquivos "normalmente" ilegíveis para fazer backups completos.O "modo de backup" é notavelmente indefinido na descrição da "ajuda". Você tem que saber que a
CreateFile
API do Windows suporta um sinalizador chamadoFILE_FLAG_BACKUP_SEMANTICS
, que em combinação com um certo direito de acessoSE_BACKUP_NAME
(que é dado ao grupo Administrador por padrão - também o grupo Operadores de Backup, duh) ignora a segurança normal de arquivos.Você não sabia disso? Então você também pode não saber que o robocopy não era originalmente parte do Windows - era parte de um suplemento chamado "Windows Resource Kit", que era usado principalmente por programadores e administradores de sistemas hard-core na época, e embora foi adquirido na distribuição do Windows no Windows Server 2008, nunca recebeu nenhuma atenção - exceto por opções de desempenho adicionais, uau! Particularmente, nenhuma atenção dos gerentes de programa dedicados à interface do usuário ou usabilidade . Portanto, é um pouco de poder bruto que pode ser usado - ou mal utilizado! - por sua conta e risco.
(Uma boa regra geral: não use opções de linha de comando que você realmente não entende.)
Informações que você pode querer saber sobre o acesso a arquivos "Modo de backup":
https://isc.sans.edu/forums/diary/Use+The+Privilege/20483/
https://docs.microsoft.com/en-us/windows/desktop/api/FileAPI/nf-fileapi-createfilea
https://docs.microsoft.com/en-us/windows/desktop/FileIO/file-security-and-access-rights
Aqui estão os resultados de acompanhamento usando as outras respostas fornecidas e testando com um destino desduplicado. ( Meta: não sei se deveria incluir isso como uma edição na parte inferior da minha pergunta original. )
A linha de comando do Robocopy evoluiu para finalmente ficar assim:
Opções e finalidade:
Reexecução final:
,
Além disso, não conheço os canais adequados para relatar bugs à Microsoft, mas vinculei a essa discussão na parte inferior da documentação de desduplicação da Microsoft, no site do Windows IT Pro Center :
https://docs.microsoft.com/en-us/windows-server/storage/data-deduplication/overview
O problema é que você não está copiando as pastas que você precisa, mas o volume inteiro, que contém a pasta oculta do sistema "Informações do volume do sistema", que é usada para qualquer coisa relacionada ao sistema de arquivos. A desduplicação e o Gerenciador de recursos do servidor de arquivos também armazenam seus dados. Ao copiar o volume para outro e usar o /MIR*, também usando o /B** você está usando o modo de backup que pode copiar pastas que sua conta de administrador não pode, você está substituindo as informações do volume do sistema em o alvo e isso destrói o armazenamento de pedaços do Dedup. Eu desaconselharia este tipo de cópia, é preferível fazê-lo por pasta OU excluir a pasta "Informações de volume do sistema" (isso economizará muito puxão de cabelo e palavrões a curto/longo prazo).
"*" Espelha o conteúdo da origem para o destino, remove do destino os arquivos não existentes na origem. ** Modo de backup, copia arquivos que não podem ser acessados por uma conta de administrador (usa o SeBackupPrivilege para a leitura de origem e o SeRestorePrivilege para copiar para a pasta de destino).
Talvez seja apenas eu, mas meu primeiro pensamento foi - nunca tente copiar a própria unidade "e$". Eu só faria o Robocopy das pastas específicas que foram criadas para o conteúdo do usuário, não quaisquer pastas do sistema criadas pelo próprio Windows.