windows多線程復制文件

2022-05-29發(fā)布者:ylm大小: 下載:0

文件大小:

軟件介紹

建議如果你要拷貝包含多個大容量文件的目錄,那就需要使用 RoboCopy 命令了,它是一個命令行的目錄復制命令,自從 Windows NT 4.0 開始就成為 windows 資源工具包的一部分,然后在 Windows Vista、Windows 7 和 Windows Server 2008 采用作為標準的功能內置,這個工具不僅復制速度非???,而且支持斷點續(xù)傳,甚至可以支持在制定的時間定時進行拷貝。Windows 7 中的此項功能也得到升級?D?D已經可以支持多線程了,這就意味著可以大大提升復制速度。而且該功能可以創(chuàng)建兩個文件結構完全的鏡像副本而不復制任何不需要的重復文件,同時還允許您保留所有相關文件信息,包括日期和時間戳、安全訪問控制列表(ACL))等等。對那種N多小文件目錄的復制能把速度提高一個數量級 ,幾千個文件3秒就復制完了,而常用的復制粘貼方式大概需要45秒。

  例如要把光盤F://里的所有文件拷貝到E盤的//CD目錄下,可以運行以下命令:

  1. 01RoboCopy /s F:// E://CD

復制代碼:

  即使此時突然取出光盤,也無妨,RoboCopy 會一直等待,直到把光盤重新放入光驅又會自動開始拷貝。

  RoboCopy 還支持局域網拷貝,甚至可以把局域網服務器中指定目錄的目錄結構全部搬到本地,RoboCopy 支持在定時操作,就可以把復制的操作放到晚上進行,以免擁塞局域網,給別人帶來不便。

  下面先看看這條命令的用法,如下圖所示:

 

image.png

  如:

  1. 01RoboCopy dir_from dir_to /E /MT:50 /LOG:copy.log

復制代碼

  其中/E表示包含子目錄,/MT:50是用50個線程(默認8個線程,最大可設128個),/LOG是重定向輸出。更多選項可以用RoboCopy /?查看。

  命令語法:

  1. 01RoboCopy source destination [file [file]...] [options]

復制代碼

  源:源目錄(驅動器://路徑或////服務器//共享//路徑)

  目標:目標目錄(驅動器://路徑 或 ////服務器//共享//路徑)

  文件:要復制的文件(名稱/通配符: 默認為 "*.*")

  為了測試復制文件的速度,做了如下的測試

 

image.png

  能夠從上圖中看到在120個線程的情況下,復制大小為878.16MB的單個文件,從14:56:31開始,14:57:06結束,共用了35秒得時間。

  建議為了能夠測試在選取多少線程數可以更快速的拷貝文件,采用PowerShell腳本進行批處理逐個測試不同線程的情況下復制所需要的時間與線程的對應關系,并將其在坐標上描點作圖,測試的PowerShell腳本如下:

  1. 01for(=128; ?Clt 129;++){

  2. 02RoboCopy /s C://CD C://test//CD /MT: /LOG:log/copy.log

  3. 03remove-item C:////test//CD//*.*

  4. 04" ," >>log/answ.txt

  5. 05(Get-Content C://log//copy.log -TotalCount 6)[-1] >>log/answ.txt

  6. 06"," >>log/answ.txt

  7. 07(Get-Content C://log//copy.log -TotalCount 10000)[-1] >>log/answ.txt}

復制代碼

  將腳本輸出的內容經過格式規(guī)整,通過CSV格式導入到Excel中,并作出折線圖如下圖中所示的"系列1"線條:

 

image.png

  拷貝的目標目錄中共有324個文件,單個文件大小介于1MB與2MB之間,總文件大小549MB,與上面大小為878.16MB的單個文件相比,拷貝的時間要比之前要長,因為文件數眾多,需要逐個進行拷貝花費了比較長的時間,而且經過多次試驗實驗當中是會有誤差的,歸一化后如圖中黃色的"線性(系列1)"線條所示,能夠看到同樣的文件組在使用不同的線程時拷貝速度是有差異的,隨著線程數的增多,拷貝的時間呈線性的減少。

  其實 RoboCopy 還有很多強大的使用方法,讀者可以使用 RoboCopy /? 命令進行查詢,或者從本文末尾的附件中查看 RoboCopy 命令的詳細選項,從中讀者將會發(fā)現這條命令更強大的功能選項。


  附:RoboCopy 命令的詳細選項

  復制選項:

  /S:復制子目錄,但不復制空的子目錄。

  /E:復制子目錄,包括空的子目錄。

  /LEV:n:僅復制源目錄樹的前 n 層。

  /Z:在可重新啟動模式下復制文件。

  /B:在備份模式下復制文件。

  /ZB:使用可重新啟動模式;如果拒絕訪問,請使用備份模式。

  /EFSRAW:在 EFS RAW 模式下復制所有加密的文件。

  /COPY:復制標記:要復制的文件內容(默認為 /COPY:DAT)。(復制標記: D=數據,A=屬性,T=時間戳)。(S=安全=NTFS ACL,O=所有者信息,U=審核信息)。

  /DCOPY:T:復制目錄時間戳。

  /SEC:復制具有安全性的文件(等同于 /COPY:DATS)。

  /COPYALL:復制所有文件信息(等同于 /COPY:DATSOU)。

  /NOCOPY:不復制任何文件信息(與 /PURGE 一起使用生效)。

  /SECFIX:修復所有文件的文件安全性,即使是跳過的文件。

  /TIMFIX:修復所有文件的文件時間,即使是跳過的文件。

  /PURGE:刪除源中不再存在的目標文件/目錄。

  /MIR:鏡像目錄樹(等同于 /E 和 /PURGE)。

  /MOV:移動文件(復制后從源中刪除)。

  /MOVE:移動文件和目錄(復制后從源中刪除)。

  /A+:[RASHCNET]:將給定的屬性添加到復制文件。

  /A-:[RASHCNET]:從復制文件中刪除給定的屬性。

  /CREATE:僅創(chuàng)建目錄樹和長度為零的文件。

  /FAT:僅使用 8.3 FAT 文件名創(chuàng)建目標文件。

  /256:關閉超長路徑(> 256 字符)支持。

  /MON:n:監(jiān)視源;發(fā)現多于 n 個更改時再次運行。

  /MOT:m:監(jiān)視源;如果更改,在 m 分鐘時間內再次運行。

  /RH:hhmm-hhmm:運行小時數 - 可以啟動新副本的時間。

  /PF:以每個文件(而不是每個步驟)為基礎檢查運行小時數。

  /IPG:n:程序包間的間距(ms),以釋放低速線路上的帶寬。

  /SL:對照目標復制符號鏈接。

  /MT[:n]:使用 n 個線程進行多線程復制(默認值為 8)。n 必須至少為 1,但不得大于 128。該選項與 /IPG 和 /EFSRAW 選項不兼容。使用 /LOG 選項重定向輸出以便獲得最佳性能。

  文件選擇選項:

  /A:僅復制具有存檔屬性集的文件。

  /M:僅復制具有存檔屬性的文件并重置存檔屬性。

  /IA:[RASHCNETO]:僅包含具有任意給定屬性集的文件。

  /XA:[RASHCNETO]:排除具有任意給定屬性集的文件。

  /XF 文件[文件]...:排除與給定名稱/路徑/通配符匹配的文件。

  /XD 目錄[目錄]...:排除與給定名稱/路徑匹配的目錄。

  /XC:排除已更改的文件。

  /XN:排除較新的文件。

  /XO:排除較舊的文件。

  /XX:排除多余的文件和目錄。

  /XL:排除孤立的文件和目錄。

  /IS:包含相同文件。

  /IT:包含已調整的文件。

  /MAX:n:最大的文件大小 - 排除大于 n 字節(jié)的文件。

  /MIN:n:最小的文件大小 - 排除小于 n 字節(jié)的文件。

  /MAXAGE:n:最長的文件存在時間 - 排除早于 n 天/日期的文件。

  /MINAGE:n:最短的文件存在時間 - 排除晚于 n 天/日期的文件。

  /MAXLAD:n:最大的最后訪問日期 - 排除自 n 以來未使用的文件。

  /MINLAD:n:最小的最后訪問日期 - 排除自 n 以來使用的文件。(If n 《1900 then n = n days, else n = YYYYMMDD date)。

  /XJ:排除接合點。(默認情況下通常包括)。

  /FFT:假設 FAT 文件時間(2 秒粒度)。

  /DST:彌補 1 小時的 DST 時間差。

  /XJD:排除目錄的接合點。

  /XJF:排除文件的接合點。

  重試選項:

  /R:n:失敗副本的重試次數: 默認為 1 百萬。

  /W:n:兩次重試間的等待時間: 默認為 30 秒。

  /REG:將注冊表中的 /R:n 和 /W:n 保存為默認設置。

  /TBD:等待定義共享名稱(重試錯誤 67)。

  日志記錄選項:

  /L:僅列出 - 不復制、添加時間戳或刪除任何文件。

  /X:報告所有多余的文件,而不只是選中的文件。

  /V:生成詳細輸出,同時顯示跳過的文件。

  /TS:在輸出中包含源文件的時間戳。

  /FP:在輸出中包含文件的完整路徑名稱。

  /BYTES:以字節(jié)打印大小。

  /NS:無大小 - 不記錄文件大小。

  /NC:無類別 - 不記錄文件類別。

  /NFL:無文件列表 - 不記錄文件名。

  /NDL:無目錄列表 - 不記錄目錄名稱。

  /NP:無進度 - 不顯示已復制的百分比。

  /ETA:顯示復制文件的預期到達時間。

  /LOG:文件:將狀態(tài)輸出到日志文件(覆蓋現有日志)。

  /LOG+:文件:將狀態(tài)輸出到日志文件(附加到現有日志中)。

  /UNILOG:文件:以 UNICODE 方式將狀態(tài)輸出到日志文件(覆蓋現有日志)。

  /UNILOG+:文件:以 UNICODE 方式將狀態(tài)輸出到日志文件(附加到現有日志中)。

  /TEE:輸出到控制臺窗口和日志文件。

  /NJS:沒有作業(yè)摘要。

  /UNICODE:以 UNICODE 方式輸出狀態(tài)。

  作業(yè)選項:

  /JOB:作業(yè)名稱:從命名的作業(yè)文件中提取參數。

  /SAVE:作業(yè)名稱:將參數保存到命名的作業(yè)文件。

  /QUIT:處理命令行后退出(以查看參數)。

  /NOSD:未指定源目錄。

  /NODD:未指定目標目錄。

  /IF:包含以下文件。

發(fā)表評論(共0條評論)
請自覺遵守互聯(lián)網相關政策法規(guī),評論內容只代表網友觀點,發(fā)表審核后顯示!

版權聲明:

1 本站所有資源(含游戲)均是軟件作者、開發(fā)商投稿,任何涉及商業(yè)盈利目的均不得使用,否則產生的一切后果將由您自己承擔!

2 本站將不對任何資源負法律責任,所有資源請在下載后24小時內刪除。

3 若有關在線投稿、無法下載等問題,請與本站客服人員聯(lián)系。

4 如侵犯了您的版權、商標等,請立刻聯(lián)系我們并具體說明情況后,本站將盡快處理刪除,聯(lián)系QQ:2499894784

返回頂部