Encontrei a resposta depois de muito jogar. A razão pela qual isso não funciona é porque ao copiar os dados do SSD para o HDD, quaisquer junções existentes são removidas. Isso ocorre por causa do /xj
flag em robocopy
, que é necessário para impedir que ele entre em um loop infinito.
Para contornar isso, um script do PowerShell poderia ser feito para fazer o seguinte:
- Copie os dados do SSD para o HDD com
robocopy /copyall /mir /xj C:\Stuff D:\Stuff
- Para cada junção em
C:\Stuff
, crie uma junção idêntica emD:\Stuff
- Para cada junção em
C:\Stuff
, copie as permissões de ACL para a junção correspondente emD:\Stuff
- Observe os atributos de
C:\Stuff
comattrib C:\Stuff
- Remover ou renomear
C:\Stuff
- Crie a junção
mklink /J C:\Stuff D:\Stuff
- Aplique os atributos de
C:\Stuff
ao ponto de junção comattrib /L C:\Stuff +H +I
(por exemplo, - ProgramData usa esses atributos)
Espero que isso mude tudo de C:\Stuff
para D:\Stuff
, mantendo todos os pontos de junção, permissões e atributos.
Mas há um 'atalho', que eu peguei. Em vez de me preocupar com tudo isso, fiz uma imagem da unidade completa de C:
e a restaurei para D:
( obviamente, certificando-se de que nenhum arquivo estava em D:
que seria substituído. Há software livre lá fora para fazer isso, como Macrium Reflect Free e Drive Image XML .
Eu então copiei os dados extras necessários para D:
e passei para a etapa 4 dos itens acima. Depois disso, acabei de remover todos os meus arquivos do Windows que não eram necessários na unidade (tive que usar meu pendrive do Ubuntu para essa parte).
Tudo funcionando!