Copiando arquivos de uma máquina para vários outros, todos na mesma rede pequena

1

Estou procurando automatizar um trabalho de cópia que normalmente faço manualmente. Eu nunca trabalhei com scripts, e tenho pouco conhecimento de rede, então é bem possível que a resposta seja mais simples do que eu imagino, mas até agora não tive sorte.

Os detalhes

Eu tenho vários computadores com o Windows 10 todos conectados no mesmo roteador, em uma sala. Eu nunca fiz nenhum tipo de configuração para um grupo de trabalho formal ou conexão entre qualquer um deles. Todos eles têm uma conta de administrador local com o mesmo nome e uma senha em branco.

Eu tenho uma árvore de pastas e arquivos que eu quero copiar de uma unidade USB para um computador e, em vez de eu carregar a unidade USB para cada computador para copiar manualmente, quero que o computador a distribua (com isso roteiro proposto) para os outros computadores na sala.

O que eu tentei

Depois de passar cerca de vinte minutos pesquisando algumas idéias iniciais, decidi tentar o robocopy. Em particular, fui atraído pela opção / mir que espelhava o destino para a origem, excluindo pastas e arquivos que não eram mais válidos. Como eu preciso fazer essa tarefa diariamente e usar a mesma estrutura de pastas a cada vez, estou interessado em remover arquivos que não estão mais na origem.

Após os dados já terem sido copiados da unidade USB para a máquina 1, meu primeiro comando ficou assim:

robocopy E:\Folder1\Folder2 \machine-2\E:\Folder1\Folder2 /mir /log:"robocopy.log"

E recebi um erro informando que o robocopy não estava satisfeito com as senhas em branco. Algumas pesquisas adicionais me ensinaram que essa é uma coisa remota do Windows, e que geralmente você não pode fazer senhas em branco no Windows ao acessar remotamente outras máquinas.

Embora eu entenda que dar a eles uma senha é a melhor opção de segurança, originalmente decidimos deixar as senhas em branco nas máquinas, porque elas são mantidas em uma sala que só nós temos a chave, e é muito mais fácil para nós acessá-los se não tivermos que digitar a senha toda vez (várias vezes ao dia). É 100% por conveniência. Então, enquanto estivermos certamente dispostos a adicionar senhas a todas as máquinas, se necessário, seria bom se pudéssemos mantê-las omitidas por enquanto. Com isso em mente, consegui encontrar essa postagem mais antiga, que mostra ao usuário como desabilitar a configuração do Windows que limita o uso local de contas de senhas em branco para fazer login apenas: link

Depois de desabilitar essa configuração em duas máquinas em que eu estava testando, tentei executar o mesmo comando novamente. Desta vez, recebi dois erros diferentes (e nesta ordem):

ERROR 5 (0x00000005) Getting File System Type of Destination \machine-2\E:\Folder1\Folder2
Access is denied.

ERROR 5 (0x00000005) Creating Destination Directory \machine-2\E:\Folder1\Folder2
Access is denied.

Então, eu achei que parecia um problema de permissão. Eu tentei brincar com as permissões de Folder1 na máquina de destino (neste exemplo, machine-2), e depois que eu não estava obtendo resultados diferentes, eu apenas dei ao grupo do Windows Everyone controle total sobre a pasta inteira. Mas mesmo isso não alterou os erros.

Depois disso, encontrei outra publicação no fórum que sugeria compartilhar a pasta. Então, cliquei com o botão direito do mouse na unidade E da máquina de destino e selecione Compartilhar com - > Compartilhamento Avançado - > Compartilhamento avançado, e escolhi compartilhar a pasta, chamando-a de E. O resultado fez parecer (para minha mente amadora) como eu a configurei corretamente: veja o recorte de tela

Então eu mudei E: para E$ no meu comando, como sugerido no post do fórum, assim:

robocopy E:\Folder1\Folder2 \machine-2\E$\Folder1\Folder2 /mir /log:"robocopy.log"

Mas, infelizmente, ainda não teve efeito.

Por fim, deparei com essa resposta do Stack Overflow sobre como usar o robocopy para copiar entre máquinas em dois domínios diferentes, usando o comando net use . Eu queria testar essa linha sozinha antes de fazer um lote, então eu digitei:

net use \machine-2\e$ /user:machine-1\myusername "" 

E este comando TAMBÉM voltou com System error 5 has occurred. Access is denied.

Mas isso ocorreu enquanto a unidade E na máquina 2 ainda era compartilhada e ainda tinha controle total concedido a todos. Isso me impressionou também.

Cheguei a um ponto em que tenho certeza de que minha falta de conhecimento sobre configuração de rede e robocopy provavelmente está me enviando para soluções em potencial que são mais complicadas do que precisam, ou são muito hackeadas em conjunto. fita adesiva tipo de moda. Não quero apenas encontrar a resposta "certa", mas também quero entendê-la.

Existe uma maneira melhor de automatizar a tarefa que estou tentando automatizar? Se o robocopy é o melhor caminho, então onde está o culpado no problema acima? É algo que preciso configurar em rede ou não estou usando o comando propriamente? Ou eu só preciso de um melhor conjunto de palavras-chave / termos de pesquisa para encontrar uma resposta mais clara eu mesmo?

Assistência ou orientação são muito apreciadas!

    
por user419262 08.06.2017 / 02:05

2 respostas

1

Honestamente, se você não conseguir adicionar uma senha (e configurar o login automático), sua melhor aposta provavelmente será um aplicativo de terceiros, como Syncthing ou rsync for Windows (cygwin ou Deltacopy). O Windows é geralmente bastante relutante em dar acesso de compartilhamento administrativo sem uma senha. A pasta pública também deve ser compartilhada nas redes não públicas, ou você pode ativá-la na rede e no centro de compartilhamento. Deve permitir conexões sem senha.

    
por 08.06.2017 / 02:55
1

Os computadores estão sendo mantidos em uma sala à qual você só tem acesso. Se alguém tiver acesso a uma tomada de rede ou sem fio fora da sala, eles terão acesso total a essas máquinas.

Dito isto, se você realmente quiser tratar essas máquinas como descartáveis e manter a senha de administrador em branco, isso deve ser possível. Eu recomendaria criar uma "TI" ou uma conta semelhante em cada uma delas e usá-la para autenticar seus scripts. Se a conta correspondente existir em todas as máquinas, elas poderão acessar as outras máquinas através do compartilhamento Administrativo ou de outra forma.

Eu colocarei meu plugue para o Powershell para copiar os arquivos para as outras máquinas.

$computers = "Machine-1","Machine-2","Machine-3"

# Push the array of computers into the loop to process each one
$computers | ForEach-Object {
    # If the folder doesn't exist...
    If (!Test-Path "\$_\E$\Folder1\Folder2") {
        # ...create it
        New-Item "\$_\E$\Folder1\Folder2" -ItemType Directory
    }

    # Copy to other computer recursively (sub-folders) and forceing overwrite
    Copy-Item "E:\Folder1\Folder2\" "\$_\E$\Folder1\Folder2" -Recurse -Force
}
    
por 12.06.2017 / 23:16