簡體   English   中英

復制文件邊緣案例

[英]Copy File Edge Case

我有一個在UserX下運行的應用程序。 我也有2個網絡路徑指向同一Share的子文件夾,例如:

  • P1 = \\\\MyMainShare\\share\\Folder 1
  • P2 = \\\\MyMainShare\\share\\Folder 2

UserX在P1和P2上均沒有權限(這意味着他無法在此處讀寫),但是我確實有UserP1和UserP2。 UserP1只能讀/寫P1。 UserP2只能讀/寫P2。

現在如何將文件從一個文件夾復制到另一個文件夾?

到目前為止,我堅持使用File.Copy和一些模擬功能,但沒有取得積極的結果...我得到的只是“訪問被拒絕” ...

細節:

  • 復制的文件可以達到20GB
  • 網絡路徑可能指向“ \\ localhost \\ c $”
  • 這是一個“服務器端”應用程序,這意味着每秒將處理數百個請求...由於明顯的擴展問題,將文件讀取到內存,切換憑據,寫入將被視為萬不得已...

使用指定的約束,您沒有太多選擇。

比“讀取內存/切換憑據/寫入”更好的選擇是執行以下操作:

批量讀取文件(例如,從Share 1作為UserP1從Share 1中讀取),同時寫入UserP1和UserP2都可以訪問的第三個(也許是本地)位置。 然后從該位置讀取文件作為UserP2並寫入共享2。

如果您有能力以多線程方式執行此操作,則可以讓UserP2在UserP1寫入文件時開始讀取文件。 這樣,在開始復制到共享2之前,您不必等待到第三個位置的寫操作就完成了。您將招致第三個位置所需的存儲空間的損失,但是不會讀取整個文件內存,也不會在開始寫入Share 2之前先將整個文件復制到第三個位置所花費的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM