為什么沒辦法在 Windows 7 下加快 Windows 7 中文件復(fù)制/傳輸功能呢,?可以用 robocopy 實現(xiàn)多線程文件復(fù)制實現(xiàn),。
經(jīng)常進行文件管理操作的朋友們,,提到復(fù)制/粘貼操作,想必很多人還會回想起當(dāng)初 Vista 奇慢的復(fù)制速度,,不滿意于 Windows
系統(tǒng)內(nèi)置的復(fù)制功能,,因為它太龜速了。于是大家就使用 FastCopy,、TeraCopy 之類的軟件來加速復(fù)制,,Windows 7
隨后則是修復(fù)了這一問題,,但效果似乎也不理想,但是你是否知道 Windows 7 已經(jīng)內(nèi)置快速復(fù)制的功能,?
解決方案:
如果你要拷貝包含多個大容量文件的目錄,,那就需要使用 RoboCopy 命令了,它是一個命令行的目錄復(fù)制命令,,自從
Windows NT 4.0 開始就成為 windows 資源工具包的一部分,,然后在 Windows Vista、Windows 7
和 Windows Server 2008
采用作為標準的功能內(nèi)置,,這個工具不僅復(fù)制速度非常快,,而且支持斷點續(xù)傳,,甚至可以支持在制定的時間定時進行拷貝。Windows 7
中的此項功能也得到升級?D?D已經(jīng)可以支持多線程了,,這就意味著可以大大提升復(fù)制速度,。而且該功能可以創(chuàng)建兩個文件結(jié)構(gòu)完全的鏡像副本而不復(fù)制任何不需要的重復(fù)文件,同時還允許您保留所有相關(guān)文件信息,,包括日期和時間戳,、安全訪問控制列表(ACL))等等。對那種N多小文件目錄的復(fù)制能把速度提高一個數(shù)量級
,幾千個文件3秒就復(fù)制完了,,而常用的復(fù)制粘貼方式大概需要45秒,。
例如要把光盤F:\\里的所有文件拷貝到E盤的\\CD目錄下,可以運行以下命令:
Robocopy /s F:\\ E:\\CD
即使此時突然取出光盤,,也無妨,,robocopy 會一直等待,直到把光盤重新放入光驅(qū)又會自動開始拷貝,。
Robocopy 還支持局域網(wǎng)拷貝,,甚至可以把局域網(wǎng)服務(wù)器中指定目錄的目錄結(jié)構(gòu)全部搬到本地,robocopy
支持在定時操作,,就可以把復(fù)制的操作放到晚上進行,,以免擁塞局域網(wǎng),給別人帶來不便,。
下面先看看這條命令的用法,,如下圖所示:
如:RoBoCopy dir_from dir_to /E /MT:50 /LOG:copy.log
其中/E表示包含子目錄,/MT:50是用50個線程(默認8個線程,,最大可設(shè)128個),,/LOG是重定向輸出。更多選項可以用robocopy
/?查看,。
命令語法:ROBOCOPY source destination [file [file]...] [options]
源:源目錄(驅(qū)動器:\\路徑或\\\\服務(wù)器\\共享\\路徑)
目標:目標目錄(驅(qū)動器:\\路徑 或 \\\\服務(wù)器\\共享\\路徑)
文件:要復(fù)制的文件(名稱/通配符: 默認為 "*.*")
為了測試復(fù)制文件的速度,,做了如下的測試
能夠從上圖中看到在120個線程的情況下,,復(fù)制大小為878.16MB的單個文件,從14:56:31開始,,14:57:06結(jié)束,,共用了35秒得時間。
為了能夠測試在選取多少線程數(shù)可以更快速的拷貝文件,,采用PowerShell腳本進行批處理逐個測試不同線程的情況下復(fù)制所需要的時間與線程的對應(yīng)關(guān)系,,并將其在坐標上描點作圖,測試的PowerShell腳本如下:
for($i=128;$i ?Clt 129;$i++){
Robocopy /s C:\\CD C:\\test\\CD$i /MT:$i /LOG:log/copy$i.log
remove-item C:\\\\test\\CD$i\\*.*
"$i ," >>log/answ.txt
(Get-Content C:\\log\\copy$i.log -TotalCount 6)[-1]
>>log/answ.txt
"," >>log/answ.txt
(Get-Content C:\\log\\copy$i.log -TotalCount 10000)[-1]
>>log/answ.txt}
將腳本輸出的內(nèi)容經(jīng)過格式規(guī)整,,通過CSV格式導(dǎo)入到Excel中,,并作出折線圖如下圖中所示的“ 系列1”線條:
拷貝的目標目錄中共有324個文件,單個文件大小介于1MB與2MB之間,,總文件大小549MB,,與上面大小為878.16MB的單個文件相比,拷貝的時間要比之前要長,,因為文件數(shù)眾多,,需要逐個進行拷貝花費了比較長的時間,而且經(jīng)過多次試驗實驗當(dāng)中是會有誤差的,,歸一化后如圖中黃色的“線性(系列1)”線條所示,,能夠看到同樣的文件組在使用不同的線程時拷貝速度是有差異的,隨著線程數(shù)的增多,,拷貝的時間呈線性的減少,。
其實 robocopy 還有很多強大的使用方法,讀者可以使用 robocopy /? 命令進行查詢,,或者從本文末尾的附件中查看
RoboCopy 命令的詳細選項,,從中讀者將會發(fā)現(xiàn)這條命令更強大的功能選項。
附:RoboCopy 命令的詳細選項
復(fù)制選項
/S:復(fù)制子目錄,,但不復(fù)制空的子目錄,。
/E:復(fù)制子目錄,包括空的子目錄,。
/LEV:n:僅復(fù)制源目錄樹的前 n 層,。
/Z:在可重新啟動模式下復(fù)制文件。
/B:在備份模式下復(fù)制文件,。
/ZB:使用可重新啟動模式,;如果拒絕訪問,請使用備份模式,。
/EFSRAW:在 EFS RAW 模式下復(fù)制所有加密的文件,。
/COPY:復(fù)制標記:: 要復(fù)制的文件內(nèi)容(默認為 /COPY:DAT)。(復(fù)制標記:
D=數(shù)據(jù),,A=屬性,,T=時間戳),。(S=安全=NTFS ACL,O=所有者信息,,U=審核信息),。
/DCOPY:T:復(fù)制目錄時間戳。
/SEC:復(fù)制具有安全性的文件(等同于 /COPY:DATS),。
/COPYALL:復(fù)制所有文件信息(等同于 /COPY:DATSOU),。
/NOCOPY:不復(fù)制任何文件信息(與 /PURGE 一起使用生效)。
/SECFIX:修復(fù)所有文件的文件安全性,,即使是跳過的文件,。
/TIMFIX:修復(fù)所有文件的文件時間,即使是跳過的文件,。
/PURGE:刪除源中不再存在的目標文件/目錄,。
/MIR:鏡像目錄樹(等同于 /E 和 /PURGE)。
/MOV:移動文件(復(fù)制后從源中刪除),。
/MOVE:移動文件和目錄(復(fù)制后從源中刪除)。
/A+:[RASHCNET]:將給定的屬性添加到復(fù)制文件,。
/A-:[RASHCNET]:從復(fù)制文件中刪除給定的屬性,。
/CREATE:僅創(chuàng)建目錄樹和長度為零的文件。
/FAT:僅使用 8.3 FAT 文件名創(chuàng)建目標文件,。
/256:關(guān)閉超長路徑(> 256 字符)支持,。
/MON:n:監(jiān)視源;發(fā)現(xiàn)多于 n 個更改時再次運行,。
/MOT:m:監(jiān)視源,;如果更改,在 m 分鐘時間內(nèi)再次運行,。
/RH:hhmm-hhmm:運行小時數(shù) - 可以啟動新副本的時間,。
/PF:以每個文件(而不是每個步驟)為基礎(chǔ)檢查運行小時數(shù)。
/IPG:n:程序包間的間距(ms),,以釋放低速線路上的帶寬,。
/SL:對照目標復(fù)制符號鏈接。
/MT[:n]:使用 n 個線程進行多線程復(fù)制(默認值為 8),。n 必須至少為 1,,但不得大于 128。該選項與 /IPG 和
/EFSRAW 選項不兼容,。使用 /LOG 選項重定向輸出以便獲得最佳性能,。
文件選擇選項
/A:僅復(fù)制具有存檔屬性集的文件。
/M:僅復(fù)制具有存檔屬性的文件并重置存檔屬性,。
/IA:[RASHCNETO]:僅包含具有任意給定屬性集的文件,。
/XA:[RASHCNETO]:排除具有任意給定屬性集的文件,。
/XF 文件[文件]...:排除與給定名稱/路徑/通配符匹配的文件。
/XD 目錄[目錄]...:排除與給定名稱/路徑匹配的目錄,。
/XC:排除已更改的文件,。
/XN:排除較新的文件。
/XO:排除較舊的文件,。
/XX:排除多余的文件和目錄,。
/XL:排除孤立的文件和目錄。
/IS:包含相同文件,。
/IT:包含已調(diào)整的文件,。
/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:假設(shè) FAT 文件時間(2 秒粒度)。
/DST:彌補 1 小時的 DST 時間差,。
/XJD:排除目錄的接合點,。
/XJF:排除文件的接合點。
重試選項
/R:n:失敗副本的重試次數(shù): 默認為 1 百萬,。
/W:n:兩次重試間的等待時間: 默認為 30 秒,。
/REG:將注冊表中的 /R:n 和 /W:n 保存為默認設(shè)置。
/TBD:等待定義共享名稱(重試錯誤 67),。
日志記錄選項
/L:僅列出 - 不復(fù)制,、添加時間戳或刪除任何文件。
/X:報告所有多余的文件,,而不只是選中的文件,。
/V:生成詳細輸出,同時顯示跳過的文件,。
/TS:在輸出中包含源文件的時間戳,。
/FP:在輸出中包含文件的完整路徑名稱。
/BYTES:以字節(jié)打印大小,。
/NS:無大小 - 不記錄文件大小,。
/NC:無類別 - 不記錄文件類別。
/NFL:無文件列表 - 不記錄文件名,。
/NDL:無目錄列表 - 不記錄目錄名稱,。
/NP:無進度 - 不顯示已復(fù)制的百分比,。
/ETA:顯示復(fù)制文件的預(yù)期到達時間。
/LOG:文件:將狀態(tài)輸出到日志文件(覆蓋現(xiàn)有日志),。
/LOG+:文件:將狀態(tài)輸出到日志文件(附加到現(xiàn)有日志中),。
/UNILOG:文件:以 UNICODE 方式將狀態(tài)輸出到日志文件(覆蓋現(xiàn)有日志)。
/UNILOG+:文件:以 UNICODE 方式將狀態(tài)輸出到日志文件(附加到現(xiàn)有日志中),。
/TEE:輸出到控制臺窗口和日志文件,。
/NJS:沒有作業(yè)摘要。
/UNICODE:以 UNICODE 方式輸出狀態(tài),。
作業(yè)選項
/JOB:作業(yè)名稱:從命名的作業(yè)文件中提取參數(shù),。
/SAVE:作業(yè)名稱:將參數(shù)保存到命名的作業(yè)文件。
/QUIT:處理命令行后退出(以查看參數(shù)),。
/NOSD:未指定源目錄,。
/NODD:未指定目標目錄。
/IF:包含以下文件,。
|