簡體   English   中英

使用C#中的BITS(后台智能傳輸服務)

[英]Using BITS (Background Intelligent Transfer Service) from C#

我想編寫一些代碼,使用BITS在同一服務器上的磁盤之間復制非常大的文件(第二個磁盤是SAN級別的clone \\ snapshot)。

我研究了BITS,因為我認為這是獲取進度\\傳輸中完整數據的百分比以及恢復功能等的好方法

我有很多托管的Powershell,我想使用內置的BITS cmdlet會很麻煩,因為這將是一種超快速的方式,我可以編寫包裝程序來獲取所需的東西,等等。不幸的是,我遇到了這個:

在非交互上下文中運行的進程(例如Windows服務)中使用* -BitsTransfer cmdlet時,可能無法將文件添加到BITS作業中,這可能導致掛起狀態。 為了使作業繼續進行,必須登錄用於創建傳輸作業的標識。 例如,當在作為任務計划程序作業執行的PowerShell腳本中創建BITS作業時,除非啟用任務計划程序的任務設置“僅在用戶登錄時運行”,否則BITS傳輸將永遠不會完成。

通過模擬的Powershell運行空間執行任何操作都會引發以下錯誤:

由於用戶尚未登錄網絡,因此未執行所請求的操作。 指定的服務不存在。 (來自HRESULT的異常:0x800704DD)”

我的Web服務以AppPoolIdentity的身份運行,需要時我會模擬。 這在托管的Powershell中不起作用是有道理的,但是有人能想到解決方法嗎? 如果這不可能,我是否有其他選擇?

我曾考慮過使用BITS Compact Server作為替代方案,但是該文檔是古老的。

您是否考慮過使用robocopy? 使用/ ZB開關運行對我來說一直很好,並且可以使用/ J啟用無緩沖I / O來提高性能。 對於輸出,還要與/ ETA和/ TEE一起運行。

暫無
暫無

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

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