【问题标题】:How to copy a file from one windows machine to other windows machine?如何将文件从一台windows机器复制到另一台windows机器?
【发布时间】:2010-09-15 18:24:08
【问题描述】:

如何将文件从一台 Windows 机器复制到另一台 Windows 机器?这样我就可以编写一个可以从 Hudson 机器上运行的批处理脚本。 我的要求是,我喜欢通过位于另一台windows机器上的Hudson(将在这台机器上生成war)在远程位于另一台windows机器上的tomcat服务器中部署war。仅供参考,两个窗口都在同一个网络或 Intranet 上。Linux 部署的另一件事是我们使用 plink。 Windows 部署有什么替代方案吗?

提前致谢

【问题讨论】:

  • copy sourcefile targetfile?我认为您需要更具体地了解这些 Windows 机器如何相互连接,是否存在任何网络共享等。

标签: windows file batch-file hudson


【解决方案1】:

取决于您实际想要做什么以及安全要求是什么。有几种选择。最简单的一种是对远程计算机\\hostname\sharename\directory\actual.file 使用带有UNC 路径的复制命令。重要的是,远程计算机已定义共享并允许运行 hudson 的用户进行写访问(文件和共享级别)。这也意味着您不能在 local_system 帐户下运行 hudson。 (如果您将 Hudson 作为服务运行,则为默认选项)

实际上我更喜欢robocopy 而不是copy。我认为微软免费提供robocopy。研究 robocopy 的文档(帮助),它是一个为应该知道自己在做什么的管理员提供的程序。 Robocopy 不仅功能强大,如果使用错误的开关,它还可以“无意”删除文件。

其他选项包括 SCP 和 FTP、Master\Slave 配置,其中从站使用 http/https 协议从 Hudson 下载工件。

编辑:

来自vishu的评论

感谢您的及时回复。作为 你的回答说明你有 在哈德逊有很好的知识,我会 想详细说明我的要求。 我的要求是,我喜欢部署 远程Tomcat服务器中的战争 在另一台windows机器上通过 哈德逊(战争将在此产生 机器),它位于另一个 窗户机。仅供参考,两个窗口都是 在同一个网络或内网。一个 Linux 部署的更多内容 使用 plink。有没有其他选择 用于 Windows 部署?

我通常部署到 Websphere Application Server。所以我需要读一点how to deploy to tomcat。看起来您只需将 wat 文件放到正确的目录中即可完成或更改 tomcat 当前使用的配置文件,它会自动拾取它(前提是一切配置正确)。

由于部署方案和您的设置非常简单,我会考虑两种选择。我的首选是在目标 Windows 机器上安装 ssh 服务并重用您已有的 plink 脚本(用于此项目或其他项目)。这里的想法是坚持一种技术。另一种选择是使用 Windows 共享。在这种情况下,请确保 Hudson 使用“真实”帐户,以便 Hudson 不需要明确映射共享(可以编写脚本,但密码可能未加密存储)。在目标系统上创建一个对 Hudson 具有写入权限的共享。比其余的无非就是一个副本。对于复制,您应该看看 robocopy,因为对于此类作业,它比复制命令要优越得多。我在这里的假设是构建作业执行部署。

如果您有两个工作,第一个创建工件,另一个部署工件。我目前更喜欢使用 wget 从 job1 中检索工件。这意味着 job1 归档其工件。第二个作业从第一个作业中获取工件(使用 wget 和 job1 的运行 URL)。在这种情况下,您可以在目标机器上运行 Hudson 从站,并且可以在本地部署。您可以在 Windows 和 Linux 上使用类似的脚本。您可以使用 cygwin 为 Windows 获取 wget(至少我是这么认为的)。使用 cygwin,您甚至可以在 Windows 上使用您的 linux 脚本。优点是,您不需要共享,也不需要单独的工件存储库。如果您将 slave 作为服务运行,您甚至不需要在目标机器上安装 ssh 服务器。

如果您手动触发部署,您可以使用batch task plugin。这实际上是一项工作,您无需担心在工作之间移动工件。缺点是,您只能从最近的作业运行部署,因为它取决于作业的工作空间。无法部署旧版本(如果您的项目现在已损坏或由于应用程序中的重大错误而需要降级)。

如果您已经有一个工件存储库,请使用主从设置并从目标计算机的存储库中检查工件。

我可以想出更多的选择,这将变得越来越深奥。最后,您必须决定您最喜欢什么,最容易实施和维护什么以及满足您的其他(次要)要求(例如某些安全限制)。

【讨论】:

  • 感谢您的及时回复。正如您的回答表明您对哈德逊有很好的了解,我想详细说明我的要求。我的要求是,我喜欢通过位于另一台windows机器上的Hudson(将在这台机器上生成war)在远程位于另一台windows机器上的tomcat服务器中部署war。仅供参考,两个窗口都在同一个网络或 Intranet 上。Linux 部署的另一件事是我们使用 plink。 Windows 部署有什么替代方案吗?
【解决方案2】:

这可以在 linux 终端中使用以下命令行:

scp -3 user1@ip:path/from/directory/ user2@ip:path/to/directory

会出现一个提示,要求输入如下密码:

user1@ip's password: user2@ip's password:

如果您在第一个密码后按回车键依次输入两个密码,它应该接受但它不会接受。 即使您按顺序再次输入两个密码,但在第一个密码后不按回车,它也不会再次接受。

您必须先输入 user2,然后按 enter,然后输入 user1 的密码并按 enter。这会起作用。

我知道这听起来不对,但只有这样才行。这是 Linux 终端 shell 中的一个错误。

【讨论】:

  • 我认为这不适用这个问题,因为 OP 要求在 Windows 机器上执行此操作,而不是在 Linux 上。
  • 顺便说一句,没有“Linux终端外壳”之类的东西。您可以在终端中运行许多不同的 shell。例如,终端可以是:文本控制台或在 X 中运行的终端仿真器。无论何时,这都是 scp 中的一个错误,因为这是这里连接到终端的唯一进程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多