
Usei um utilitário do Windows 7 para excluir arquivos duplicados exatos de byte por byte e substituí-los por um link simbólico antes de saber que o tipo de link simbólico não é permitido em nosso domínio corporativo. Preciso de uma maneira de desfazer todas as alterações feitas, mas o programa não tem como fazer isso.
É possível escrever algum tipo de script que encontre os links, encontre o arquivo, remova o link e copie o arquivo de volta para a pasta e renomeie-o para corresponder ao nome dos links? Ou talvez um software que faça isso?
Obrigado por toda e qualquer ajuda.
Responder1
Este é o tipo de situação em que realmente compensa ter uma estratégia de backup bem planejada e mantida. Se for esse o caso da sua empresa, use-o.
O que você fez foi uma maneira ruim de economizar espaço. Considere o seguinte caso de uso:
- O usuário copia arquivos do compartilhamento Deptx em preparação para trabalhar neles
- Você joga as cópias dela e cria links simbólicos para as origens
- Ela modifica os originais que ainda eram exigidos por outros para seu trabalho
- ...
Se você tem pouco armazenamento, é melhor elaborar um plano de negócios para a compra de armazenamento adicional. Idealmente, uma solução que suporte a desduplicação em nível de bloco. Se o seu dispositivo existente oferecer desduplicação, você poderia ter enviado uma solicitação de alteração para aprovação para implementá-la - mas esse tempo já passou.
Uma nota para o futuro. Como administrador de armazenamento, você precisa informar a empresa quando chegar a hora de expandir o armazenamento, o que geralmente ocorre quando ele está meio cheio. Quando estiver 70% cheio, você pode começar a acionar o alarme de incêndio diariamente até que o orçamento seja atribuído. Se isso não acontecer, é hora de informá-los, numa reunião muito franca, que estão arriscando o negócio. Os dados são o núcleo dos negócios modernos.
Você pode identificar todos os links simbólicos com:
C:\Users\user>dir /AL /S C:\ | find "SYMLINK"
07/14/2009 01:08 AM <SYMLINKD> All Users [C:\ProgramData]
# Only one result in on my Windows 7 host, and it's a system default.
# There are likely more in Windows Server OSs.
# Cmd Explained:
# /AL A Lists file with attribute:L (Symlinks and dir junctions)
# /S Do recursively
# C:\ Drive to scan
'Todos os usuários' é o link simbólico 'C:\Users\All Users', que tem como alvo 'C:\ProgramData'. Observe que a saída do comando acima não fornece o caminho completo para o link simbólico de que você precisa.
<<< STOP >>> Se o número de links simbólicos for inferior a mil, pode valer a pena considerar substituí-los manualmente pelos arquivos de destino.
Você poderia usar NTFSLinksView. Parece ser capaz de exportar dados que incluem o destino completo e os caminhos do link simbólico.http://www.nirsoft.net/utils/ntfs_links_view.html
Depois de ter esses valores, você pode percorrê-los com este pedaço do Powershell. Modifique o delim para qualquer saída do programa. O exemplo define espaços como delimitador. Se usar vírgulas, use: ','. Certifique-se de que o cvs tenha apenas os dados Link e Target. Naquela ordem.
Nota: Isso não preserva os links simbólicos padrão...
Import-CVS -Delim ' ' -Path input.cvs -Header Link,Target | ForEach-Object {
cmd /c rmdir $Link
Copy-Item $Target $Link
}
AVISO: Isto não foi testado e tem potencial para causar ainda mais danos... Use por sua própria conta e risco. Se não existirem backups anteriores e você tiver chegado a esse resultado, faça um backup antes de prosseguir.
Responder2
Esse problema não se deve a uma política de domínio. É por causa de uma atualização do Windows que quebrou links simbólicos.este tópicome ajudou a entender o problema real. Após desinstalar a atualização e usar um prompt de comando para executar este comando:
conjunto de comportamento fsutil SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
Consegui copiar a pasta superior para uma unidade USB local e recuperar os arquivos originais como arquivos com o nome original e desfazer a maior parte dos "danos" que causei.
Para quem desinstala a atualização e usa o comando acima, é preciso fazer as duas coisas nas duas máquinas para que os links funcionem corretamente. Só consegui fazer isso no computador que usei originalmente para desduplicar a pasta. Eu nem tenho certeza se tive que executar alguma ação para copiar os arquivos para uma unidade USB e fazer com que os links se comportassem de forma que eu recuperasse os arquivos originais. Neste ponto, corrigi o problema e não preciso prosseguir com a codificação que estava fazendo.