Я хочу ускорить процесс развертывания, в настоящее время у меня есть один промежуточный сервер и веб-ферма в производстве.
Я сейчас использую robocopy
для зеркалирования каждого сервера веб-фермы с промежуточного сервера, однако это очень медленно.
Моя команда копирования выглядит следующим образом
ROBOCOPY %codeSourceDir% %targetSite% /MIR /XF *.config
Которая должна отражать папки, исключая любые *.config
файлы.
Это ведет себя правильно, но для копирования 200 мб файлов на 8 серверов, это занимает примерно 4 минуты на сервер (всего около 30 минут). Если я сделаю простое удаление папки и скопирую с помощью удаленного рабочего стола, это займет около 5 секунд! Причина, по которой я думаю, такая большая разница, заключается в том, что файлов много (~ 10 тысяч), и большая часть времени, затрачиваемого на robocopy, - это сравнение файлов.
Есть ли способ ускорить копирование, игнорируя функцию сравнения файлов?
Что я хочу сделать, так это отразить каталоги (в основном, удалить лишние файлы), меня не волнует, перезаписываю ли я файлы, которые такие же. Может ли это сделать robocopy или есть лучший инструмент для этой работы?
В /is
флаг перезапишет файлы. Это «включать те же файлы», и он должен выполнить вашу задачу. Я бы также использовал /W:1
чтобы установить время ожидания повторной попытки равным 1 секунде, а не 30 по умолчанию. Возможно, ваша задержка связана с блокировкой на вашей целевой стороне; ты это проверил?
Я не знаю способа скопировать без проверки, но это должно привести вас туда, где вам нужно.
Конечно, вы также можете использовать другую строку robocopy, чтобы просто удалить все файлы из целевого каталога ПЕРЕД запуском зеркала. Это, безусловно, сработает.
Вы должны взглянуть на DFS - Распределенная файловая система (Microsoft) это делает практически то, что вы хотите, прозрачно.
Не думаю, что я понимаю, что вы имеете в виду под «простым удалением папки и копированием с помощью удаленного рабочего стола, это занимает примерно 5 секунд». Вы имеете в виду, что вы фактически удаляете одну папку с промежуточного сервера, затем копируете всю иерархию на веб-сервер через RDP, и все это занимает 5 секунд? Вы говорите ему пропустить все файлы, которые он уже находит на удаленном сервере? Это не приведет к обновлению содержимого этих файлов, если они изменились.
Вернемся к Robocopy: вы можете ограничить набор файлов с помощью «/ xo» (исключить старые файлы). Также рассмотрите возможность использования многопоточности с «/ mt: X», где «X» - это количество потоков, выполняемых параллельно.
Вы можете увидеть все варианты Robocopy Вот.