从Web服务器连续同步更改

时间:2014-10-27 07:43:25

标签: ssh synchronization sftp winscp

我正在寻找一种方法将我的文件从Web服务器(Ubuntu 14)同步(任务)到本地服务器(Windows Server)。 Web服务器创建本地服务器所需的小文件。 Web服务器位于DMZ中,可通过SSH访问。只有本地服务器才能访问Web服务器上的文件夹。它尝试使用像WinSCP这样的程序,但我无法设置“获取”-Job。

有没有办法在Windows服务器上使用SSH而不是每隔几秒登录一次?或者有更好的解决方案吗?在未来,Web服务是可能的,但目前我需要一个快速的解决方案。

1 个答案:

答案 0 :(得分:0)

您需要安排定期频繁的工作,连接并下载更改。

或者您需要持续运行流程,以保持连接打开并定期监视更改。

这不是一个更好的解决方案(仍然可以快速,轻松地实施)。

使用WinSCP .NET assembly实施的连续流程示例:

// Setup session options
SessionOptions sessionOptions = new SessionOptions {
    Protocol = Protocol.Sftp,
    HostName = "example.com",
    UserName = "user",
    Password = "mypassword",
    SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx...="
};

using (Session session = new Session())
{
    // Connect
    session.Open(sessionOptions);

    while (true)
    {
        // Download changes
        session.Synchronize(
            SynchronizationMode.Local, localPath, remotePath, false).Check();

        // Wait 10 seconds
        Thread.Sleep(10000); 
    }
}

如果连接中断,您将需要添加更好的错误处理和重新连接。

如果您不想将其实现为(C#)应用程序,则可以使用PowerShell脚本。将上面的代码转换为PowerShell非常简单。 见
https://winscp.net/eng/docs/library_powershell
https://winscp.net/eng/docs/library_session_synchronizedirectories#powershell