2010-09-15 54 views
1

如果我的.NET客戶端使用System.IO.File.Copy將文件從\ server1 \ share1 \ file1.txt複製到\ sever1 \ share2 \ file2 .txt,文件的數據讀取到客戶端,然後寫回服務器。將文件複製到網絡路徑而不將其傳輸到我自己的計算機

是否有一種簡單的方法,通過在網絡機器上放置一個進程來加速一些事情,而這臺機器真的在進行復制?

我不尋找關於編程這種服務的建議。我寧願找到已經這樣做的工具或windows功能。

回答

3

這聽起來像是一個telnet或ssh的工作,但這可能是一個痛苦的設置。我建議你看看微軟的PsExec,它允許你在遠程機器上執行程序。您可以簡單地使用通過PsExec在system32中找到的copy程序。

有沒有必要創建自己的程序來做到這一點,只需使用目標機器上的命令行工具。

0

幾乎可以肯定。我能想到的幾個基本的方法來做到這一點:

  1. 創建一個簡單的控制檯的一個應用,是以源和目標路徑/文件名,並執行File.Copy()。將它放在遠程機器上的已知位置。然後使用PsExec調用遠程機器上的進程。您的客戶端應用程序必須完全信任地運行,才能以編程方式調用進程,並且運行該應用程序的用戶必須有權在遠程服務器上運行程序。

  2. 創建一個簡單的Web方法,再次獲取源和目標並執行復制。這需要在網絡服務器上設置具有必要權限的IIS以在IIS「沙箱」之外執行文件訪問。但是,它需要更少的客戶端代碼權限。

+0

爲什麼要創建控制檯應用程序? Windows自己的副本有什麼問題? – 2010-09-15 16:57:50

+0

您可以授予對您自己的控制檯應用程序的訪問權限,而無需遠程編程訪問Windows/System32,您可以執行服務器端驗證要執行的副本的其他業務規則,您可以將更改記錄到文件結構以進行審計,等等。在基本情況下,windows copy沒有什麼「錯誤」,但是這些東西現在或以後可能是有價值的。 – KeithS 2010-09-15 17:44:48

0

如果您的客戶端和服務器是Vista和更高版本,FYI CopyFileEx已經這樣做。所以,在這種情況下,不要指出重複這種努力。

-scott

相關問題