2014-10-27 57 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