2010-09-15 2 views
0

Как скопировать файл с одной машины Windows на другую машину Windows? так что я могу написать пакетный скрипт, который можно запустить с машины Хадсона. Мое требование: мне нравится разворачивать войну на сервере tomcat удаленно на другой машине Windows через Hudson (война будет сгенерирована на этом аппарате), которая находится в другой машине Windows. FYI. Оба окна находятся в одной сети или интранете. Еще одна вещь для развертывания Linux - это использование plink. Есть ли альтернатива для развертывания Windows?Как скопировать файл с одного окна на другую машину Windows?

Заранее спасибо

+4

'copy sourcefile targetfile'? Я думаю, вам нужно быть более конкретным о том, как эти компьютеры Windows связаны друг с другом, существуют ли какие-либо сетевые ресурсы и т. Д. –

ответ

0

Зависит от того, что вы на самом деле хотите сделать, и какие требования к безопасности. Существует несколько вариантов. Самый простой способ - использовать команду копирования с UNC-путём для удаленного компьютера \\hostname\sharename\directory\actual.file. Важно то, что на удаленном компьютере указан общий ресурс и разрешен доступ на запись (на уровне файла и общего доступа) для пользователя hudson. Это также означает, что вы не можете запустить hudson под учетной записью local_system. (опция по умолчанию, если вы запустите Hudson как услугу)

На самом деле я бы предпочел robocopy над copy. Я думаю, что microsoft предлагает robocopy бесплатно. Изучите документацию (помощь) robocopy, это программа для администраторов, которые должны знать, что они делают. Robocopy не только устойчив, если используется с неправильными коммутаторами, он также может «непреднамеренно» удалять файлы.

Другие варианты включают SCP и FTP, конфигурации Master \ Slave, где подчиненный загружает артефакты из Хадсона, используя http/https protocoll.

EDIT:

комментарий от Вишу

Спасибо за быстрый ответ. Как ваш ответ объясняет, что у вас есть хорошие знания в Гудзоне, я бы хотел бы дать мое требование в деталях. Мое требование, я хотел бы развернуть войну в TOMCAT сервер, расположенный удаленно в другой машине окна через Хадсон (война будет генерироваться в этой машине), которая расположена в другой машине окна. FYI. Оба окна: в той же сети или intranet.One больше вещей для развертывания Linux мы с использованием plink. Есть ли альтернатива для развертывания Windows?

Обычно я использую сервер приложений Websphere. Поэтому мне нужно было немного почитать по адресу how to deploy to tomcat. Похоже, вам просто нужно сбросить файлы wat в нужный каталог, и вы закончите или измените файлы конфигурации, которые в настоящее время используются tomcat, и он автоматически подберет его (при условии, что все настроено правильно).

Поскольку сценарий развертывания и ваша установка очень просты, я бы рассмотрел два варианта. Мое предпочтение в том, чтобы установить службу ssh на целевую машину Windows и повторно использовать ваши скрипты plink, которые у вас уже есть (для этого или других проектов). Идея заключается в том, чтобы придерживаться одной технологии. Другой вариант - использовать общие ресурсы Windows. В этом случае убедитесь, что Хадсон использует «реальную» учетную запись, так что Хадсону явно не нужно сопоставлять общий ресурс (можно писать по сценарию, но пароли могут быть сохранены в незашифрованном виде). Создайте общий ресурс в целевой системе с разрешением на запись для Hudson. Чем остальное - не что иное, как копия.Для копии вы должны взглянуть на robocopy, поскольку она намного превосходит работу такого типа, чем команда копирования. Мое предположение заключается в том, что задание сборки выполняет развертывание.

В случае, если у вас есть две работы, первая создает артефакты, а другая развертывает артефакты. В настоящее время я предпочитаю использовать wget для извлечения артефактов из job1. Это означает, что job1 архивирует свои артефакты. Второе задание получает артефакты из первого (используя wget и URL-адрес запуска для job1). В этом случае вы можете запустить ведомое устройство Hudson на целевом компьютере, и вы можете развернуть его локально. Вы можете использовать похожие скрипты для Windows и Linux. Вы можете получить wget для windows с cygwin (по крайней мере, я так думаю). С помощью cygwin вы даже сможете использовать свой linux-скрипт для окон. Преимущество состоит в том, что вам не нужны акции и нет отдельного репозитория артефактов. Если вы запускаете ведомое устройство как услугу, вам даже не нужно устанавливать ssh-сервер на целевую машину.

Если вы запускаете развертывание вручную, вы можете использовать batch task plugin. Чем это практически одна работа, и вам не нужно беспокоиться о перемещении артефактов между заданиями. Недостатком является то, что вы можете выполнять развертывание только с самого последнего запуска работы, поскольку он зависит от рабочей области задания. Развертывание старых версий (если ваш проект нарушен прямо сейчас или если вам нужно понизить рейтинг из-за серьезной ошибки в вашем приложении), это невозможно.

Если у вас уже есть хранилище артефактов, используйте настройку главного подчиненного устройства и проверьте артефакты из вашего репозитория с целевой машины.

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

+0

Спасибо за ваш быстрый ответ. Поскольку ваш ответ объясняет, что у вас есть хорошие знания в Хадзоне, я хотел бы подробно рассказать о своем требовании. Мое требование: мне нравится развертывать войну на сервере tomcat удаленно на другой машине Windows через Hudson (война будет сгенерирована на этом аппарате), которая находится в другой машине Windows. FYI. Оба окна находятся в одной сети или интранете. Еще одна вещь для развертывания Linux - это использование plink. Есть ли альтернатива для развертывания Windows? – vishu

-3

Это возможно с помощью следующей командной строки в Linux терминале:

scp -3 [email protected]:path/from/directory/ [email protected]:path/to/directory 

подсказка появится запросов паролей, как это:

[email protected]'s password: user[email protected]'s password: 

Если вы даете как пароли, чтобы при нажатии ввода после первого пароля он должен принять, но это не будет. Даже если вы снова дадите оба пароля по порядку, но не нажимая «ввод» после первого пароля, он не примет снова.

Сначала вы должны указать user2, затем нажмите «Ввод», а затем введите пароль пользователя1 и нажмите «Ввод». Это сработает.

Я знаю, что это звучит не так, но только это сработает. Это ошибка в оболочке терминала Linux.

+0

Я думаю, что это не касается вопроса, потому что ОП запросил это сделать на машине под Windows, а не в Linux. –

+0

Кстати, нет такой вещи, как «оболочка терминала Linux». Вы можете запускать много разных оболочек внутри терминала. И терминал может быть, например: текстовая консоль или эмулятор терминала, работающий внутри X. Всякий раз, когда это ошибка в 'scp', потому что это единственный процесс, подключенный к терминалу здесь. –

+0

благодарит Мартина за обмен, он ценится. –

Смежные вопросы