Desfazer a criação de links simbólicos copiando de volta o original, renomeando o arquivo e excluindo o link

0

Eu usei um utilitário do windows 7 para excluir arquivos duplicados de byte por byte exato 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. Eu preciso de uma maneira de desfazer todas as alterações feitas, mas o programa não tem como fazer isso.

É possível escrever um script de algum tipo 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 faz isso?

Obrigado por toda e qualquer ajuda.

    
por DawnTreader 25.05.2015 / 22:04

2 respostas

0

Esse é o tipo de situação em que ter uma estratégia de backup bem planejada e mantida realmente vale a pena. Se esse for o caso da sua empresa, use-o.

O que você fez é uma maneira ruim de economizar espaço. Considere o seguinte caso de uso:

  1. O usuário copia arquivos do compartilhamento do Deptx em preparação para trabalhar neles
  2. Você lança suas cópias e cria links simbólicos para as origens
  3. Ela modifica os originais que ainda eram exigidos por outros para o trabalho deles
  4. ...

Se você tem pouco armazenamento, é melhor redigir um plano de negócios para a compra de armazenamento adicional. Idealmente, uma solução que ofereça suporte à desduplicação em nível de bloco. Se o seu aparelho existente oferecer desduplicação, você poderá ter enviado uma solicitação de alteração para aprovação para implementá-lo, mas esse tempo é passado.

Uma nota para o futuro. Como administrador de armazenamento, você precisa informar os negócios quando for a hora de expandir o armazenamento, que geralmente é quando está quase pela metade. Quando está 70% cheio, você pode começar a puxar o alarme de incêndio diariamente até que ele determine o orçamento. Se isso não acontecer, é hora de informá-los em uma reunião muito franca que eles 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

'All Users' é o link simbólico 'C: \ Users \ All Users', que segmenta 'C: \ ProgramData'. Note que a saída do comando acima não fornece o caminho completo para o symlink, o que você precisa.

< < < STOP > > > Se o número de links simbólicos for menor que mil, pode valer a pena considerar substituí-los manualmente por seus arquivos de destino.

Você pode usar o NTFSLinksView. Parece ser capaz de exportar dados que incluem o destino completo e os caminhos de links simbólicos. link

Depois de ter esses valores, você pode percorrê-los com esse pouco de Powershell. Modifique o delimitador para qualquer que seja o resultado do programa. O exemplo define espaços como o delimitador. Se usar vírgulas, use: ','. Certifique-se de que o cvs tenha apenas os dados Link e Target. Nessa ordem.

Nota: isso não preserva 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: Isso não foi testado e tem potencial para causar ainda mais danos ... Use por sua conta e risco. Se não houver backups anteriores e você tiver chegado a esse resultado, faça um backup antes de continuar.

    
por 26.05.2015 / 07:32
0

Este problema não é devido a uma política de domínio. É por causa de uma atualização do Windows que quebrou links simbólicos. este tópico ajudou-me entender o problema real. Depois de desinstalar a atualização e usar um prompt de comando para fazer este comando:

conjunto de comportamento fsutil SymlinkEvaluation L2L: 1 R2R: 1 L2R: 1 R2L: 1

Consegui copiar a pasta principal para uma unidade USB local e recuperar os arquivos originais como arquivos como o nome original e desfazer a maior parte do "dano" que fiz.

Para aqueles que desinstalam a atualização e usam o comando acima, você precisa fazer as duas coisas nas duas máquinas para que os links funcionem corretamente. Eu só consegui fazer isso no computador que originalmente usei para desduplicar a pasta. Eu nem tenho certeza se eu tinha que fazer alguma ação para copiar os arquivos para uma unidade USB e ter os links se comportando para que eu recuperasse os arquivos originais. Neste ponto, corrigi o problema e não preciso prosseguir com a codificação que estava fazendo ainda mais.

    
por 07.06.2015 / 18:18