我当前的工作涉及在 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"
有关详细信息,另请参阅指南自动将文件传输(或同步)到 SFTP 服务器。
(我是 WinSCP 的作者)