如何在远程虚拟机上自动上传代码更改

如何在远程虚拟机上自动上传代码更改

我当前的工作涉及在 Ubuntu VM 上运行脚本。

由于多种原因,我在运行 Windows 的本地计算机上编辑和提交项目文件,并通过 SSH 连接(使用 MobaXTerm)在远程服务器上运行它们。我在开发时的构建过程大致如下:

  • 在我的本地文本编辑器中写下更改。

  • 在 MobaXTerm 的 SFTP UI 中打开正确的目录。

  • 点击“上传文件”,在Windows文件浏览器中选择正确的目录和文件。

  • 在虚拟机上运行systemctl restart apache2.service我需要的任何东西。

(显然生产构建的构建过程更加彻底和自动化)

步骤 2 和步骤 3 感觉非常多余。它们重复、容易忘记、容易出错,而且我通常会向计算机提供它应该比我更了解的信息。

是否有一种标准化、安全的方法可以从 Windows 自动同步本地文件夹和远程 SSH 文件夹?

本质上,我想要的是一些实用的东西文件myDirectory/foo/bar/X已更改!正在将文件 X 上传至someUrl/theirDirectory/foo/bar/X以最低限度的配置。

答案1

不存在“标准化的方式”。

您有以下选择:

  • 使用可以监视本地目录中的变化并将其反映在远程 SFTP 目录中的工具。
  • 安排本地文件夹与远程文件夹的频繁同步。
  • 有一些(商业)工具可以将远程 SFTP 文件夹映射到本地驱动器。使用这些工具,您可以使用任何本地应用程序直接处理/编辑远程文件。
  • 一些编辑器允许直接编辑 SFTP 服务器上的文件。

您可以使用以下方式实现前两个选项WinSCP SFTP 客户端


观察变化

使用“保持远程目录更新”功能的 WinSCP。

它可以在命令行/控制台模式下使用keepuptodate命令, 喜欢:

winscp.com /ini=nul /log=c:\writable\path\to\synchronize.log /command ^
    "open sftp://username:[email protected]/" ^
    "keepuptodate C:\local\path /remote/path" ^
    "exit"

或者图形/GUI 模式您可以在 WinSCP GUI 中启动图形模式(登录后),也可以使用命令行启动/keepuptodate转变喜欢:

winscp.exe sftp://username:[email protected]/ /keepuptodate C:\local\path /remote/path

调度

要将本地目录中的更改同步到远程目录,请使用 WinSCPsynchronize脚本命令来自批处理文件,例如:

winscp.com /ini=nul /log=c:\writable\path\to\synchronize.log /command ^
    "open sftp://username:[email protected]/" ^
    "synchronize remote C:\local\path /remote/path" ^
    "exit"

使用 Windows 调度程序安排批处理文件频繁运行

有关详细信息,另请参阅指南自动将文件传输(或同步)到 SFTP 服务器


(我是 WinSCP 的作者)

相关内容