2014-10-27 55 views
0

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

有没有办法在Windows服务器上使用SSH进行此操作,而无需每隔几秒钟登录一次?还是有更好的解决方案?在未来,Web服务是可能的,但目前我需要一个快速解决方案。

回答

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 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx" 
}; 

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

+0

是的,我需要一个汽车无正在运行的进程,保持打开的连接,并定期手表的变化。最好用SSH。 – Meethi 2014-10-29 09:13:45

+0

@Meethi我在答案中增加了一些示例。 – 2014-10-29 09:40:25

+0

谢谢!这就是我所寻找的。稍后我会发布我的解决方案。 – Meethi 2014-10-30 14:10:23