Назад | Перейти на главную страницу

Копирование файлов с одного компьютера на несколько других, все в одной небольшой сети

Я хочу автоматизировать копирование, которое я обычно делаю вручную. Я никогда не работал со сценариями и плохо разбираюсь в сетевых технологиях, поэтому вполне возможно, что ответ будет проще, чем я думаю, но пока мне не повезло.

Детали

У меня есть несколько компьютеров с Windows 10, подключенных к одному маршрутизатору в одной комнате. Я никогда не создавал формальной рабочей группы или связи между ними. У всех есть одна учетная запись локального администратора с тем же именем и пустым паролем.

У меня есть дерево папок и файлов, которые я хочу скопировать с USB-накопителя на один компьютер, а затем вместо того, чтобы переносить USB-накопитель на каждый компьютер для копирования вручную, я хочу, чтобы этот компьютер распространял его (с помощью этого предлагаемого сценария) к другим компьютерам в комнате.

Что я пробовал

Потратив около двадцати минут на обдумывание некоторых первоначальных идей, я решил попробовать robocopy. В частности, меня привлекла опция / mir, которая отображала место назначения на источник, удаляя папки и файлы, которые больше не действовали. Поскольку мне нужно выполнять эту задачу ежедневно и каждый раз она использует одну и ту же структуру папок, я заинтересован в удалении файлов, которых больше нет в источнике.

После того, как данные уже были скопированы с USB-накопителя на машину-1, моя первая команда выглядела так:

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

И я получил ошибку, сообщающую мне, что robocopy не доволен пустыми паролями. Некоторые дальнейшие исследования научили меня, что это удаленная вещь Windows, и что обычно вы не можете вводить пустые пароли в Windows при удаленном доступе к другим машинам.

Хотя я понимаю, что дать им всем пароль - лучший выбор безопасности, мы изначально решили оставить пароли пустыми на машинах, потому что они хранятся в комнате, ключ к которой есть только у нас, и нам намного проще получить к ним доступ, если нам не нужно каждый раз (несколько раз в день) вводить пароль. Это 100% для удобства. Итак, хотя мы, конечно, готовы добавить пароли ко всем машинам, если это необходимо, это было бы хорошо если бы мы могли пока оставить их опущенными. Имея это в виду, мне удалось найти этот более старый пост, в котором показано, как пользователю отключить параметр Windows, ограничивающий использование локальной учетной записи пустых паролей только для входа в систему: http://dandar3.blogspot.com/2008/04/windows-vista-allow-remote-desktop.html

После отключения этого параметра на двух машинах, между которыми я тестировал, я снова попытался запустить ту же команду. На этот раз у меня две разные ошибки (и в таком порядке):

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.

Тогда я подумал, что это похоже на проблему с разрешениями. Я попытался поиграть с разрешениями Folder1 на конечном компьютере (в данном примере - machine-2), и после того, как я не получил других результатов, я просто предоставил группе Windows Все полный контроль над всей папкой. Но и это не изменило ошибок.

После этого я нашел еще одно сообщение на форуме, в котором предлагалось поделиться папкой. Итак, я щелкнул правой кнопкой мыши диск E целевой машины и выбрал «Совместное использование с» -> «Расширенное совместное использование» -> «Расширенное совместное использование» и решил предоставить общий доступ к папке, назвав ее E. В результате это выглядело (на мой любительский взгляд), как я. настроил правильно: увидеть вырезку экрана

Итак, я изменил E: к E$ в моей команде, как было предложено в сообщении на форуме, например:

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

Но, к сожалению, эффекта все равно не было.

Наконец, я наткнулся на этот ответ о переполнении стека об использовании robocopy для копирования между машинами в двух разных доменах с использованием net use команда. Я хотел протестировать эту строку отдельно, прежде чем делать из нее партию, поэтому набрал:

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

И эта команда ТАКЖЕ вернулась с System error 5 has occurred. Access is denied.

Но это было в то время, когда диск E на машине 2 был еще общим, и все еще имел полный контроль, предоставленный каждому. Это тоже поставило меня в тупик.

Я подошел к моменту, когда я уверен, что мое отсутствие знаний о настройке сети и robocopy, вероятно, направляет меня к потенциальным решениям, которые либо более сложны, чем они должны быть, либо очень сильно взломаны вместе в виде изоленты. моды. Я не просто хочу найти «правильный» ответ, но я также хочу его понять.

Есть ли лучший способ автоматизировать задачу, которую я пытаюсь автоматизировать? Если роботизированное копирование - лучший способ, то где же виновник вышеуказанной проблемы? Это что-то, что мне нужно настроить в сети, или я неправильно использую саму команду? Или мне просто нужен лучший набор ключевых слов / условий поиска, чтобы самому найти более четкий ответ?

Мы очень ценим помощь или руководство!

Компьютеры находятся в комнате, доступ к которой есть только у вас. Если кто-то имеет доступ к сетевому разъему или беспроводной сети за пределами этой комнаты, он ДЕЙСТВИТЕЛЬНО имеет полный доступ к этим машинам.

При этом, если вы действительно хотите рассматривать эти машины как одноразовые и сохранять пустой пароль администратора, это должно быть возможно. Я бы порекомендовал создать «ИТ» или подобную учетную запись для каждого из них, а затем использовать ее для аутентификации для ваших сценариев. Если соответствующая учетная запись существует на всех машинах, они должны иметь доступ к другим машинам через административный ресурс или иным образом.

Я вставлю свой плагин для Powershell, чтобы скопировать файлы на другие машины.

$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
}

Честно говоря, если вы не можете добавить пароль (и настроить автоматический вход), то лучшим вариантом будет, вероятно, стороннее приложение, такое как Syncthing или rsync для Windows (cygwin или Deltacopy). Windows обычно неохотно предоставляет административный доступ к общему ресурсу без пароля. Общая папка также должна быть доступна по умолчанию в непубличных сетях, или вы можете включить ее в центре сети и общего доступа. Он должен разрешать соединения без пароля.