robocopy命令的用法與實例(Windows?的可靠文件復制)
一 Robocopy簡介
Robocopy 是一個功能超強的32位的文件復制工具,該工具來自windows資源包,可以直接在網(wǎng)上下載。
使用Robocopy你能夠拷貝單個目錄,或迭代的拷貝目錄及其所有的子目錄。該工具通過文件是否存在于源目錄,目標目錄,或兩者都存在來分類。如果文件同時存在于源目錄和目標目錄,則該工具更具體地通過比較源文件和目標文件的大小和時間戳來分類。通過這些分類,你可以控制那些文件將被拷貝。如果一個文件同時存在于源目錄和目標目錄,默認的只有源文件和目標文件擁有不同的時間戳或大小時,Robocopy重新拷貝該文件。如果源目錄和目標目錄處于比較差的網(wǎng)路環(huán)境中時,通過此方式可以節(jié)約時間。同時你還可以設置當拷貝有錯誤發(fā)生時,繼續(xù)重新拷貝,如果你所處的網(wǎng)絡不太穩(wěn)定的話,此方式可以大大的節(jié)約時間。
二 使用格式
ROBOCOPY source destination [file [file]...] [options]
源:: 源目錄(驅(qū)動器:\路徑或\服務器\共享\路徑)。
目錄:: 目標目錄(驅(qū)動器:\路徑或\服務器\共享\路徑)。
文件:: 要復制的文件(名稱/通配符: 默認為 "*.*")。
三 功能
1)用文件名,通配符,路徑,文件屬性來匹配拷貝源;或者也可以使用文件名,通配符,路徑,文件屬性來從源目錄中去除匹配的項,剩余的項作為拷貝源。
2)通過名字或路徑來去除子目錄的拷貝。
3)在拷貝后刪除源文件或目錄。(其實就是移動功能)
4)在目標目錄中刪除源目錄中不存在的文件和目錄。(其實就是同步功能,保證目標目錄跟源目錄保持一致)
5)控制當拷貝中遭遇網(wǎng)絡問題時,重新拷貝的次數(shù)和間隔時間。
6)安排拷貝工作自動運行。
7)指定何時拷貝開始執(zhí)行。
8)監(jiān)控目錄樹的改變。
9)選擇性的拷貝數(shù)據(jù)。
四 版本
- v1.96 - Bundled in the Windows 2000
- XP010 - Bundled in the Windows 2003 resource kit
- XP026 - Downloaded with Robocopy GUI
- XP027 - Bundled with Windows Vista
- XP028 - Bundled with Windows Vista SP1 and Windows Server 2008
五 Robocopy的命令行選項
來自win10版本的robocopy的命令行選項
用法 :: ROBOCOPY source destination [file [file]...] [options]
源 :: 源目錄(驅(qū)動器:\路徑或\\服務器\共享\路徑)。
目標 :: 目標目錄(驅(qū)動器:\路徑或\\服務器\共享\路徑)。
文件 :: 要復制的文件(名稱/通配符: 默認為 "*.*")。
1、復制選項
/S :: 復制子目錄,但不復制空的子目錄。
/E :: 復制子目錄,包括空的子目錄。
/LEV:n :: 僅復制源目錄樹的前 n 層。
/Z :: 在可重新啟動模式下復制文件。
/B :: 在備份模式下復制文件。
/ZB :: 使用可重新啟動模式;如果拒絕訪問,請使用備份模式。
/J :: 復制時使用未緩沖的 I/O (推薦在復制大文件時使用)。
/EFSRAW :: 在 EFS RAW 模式下復制所有加密的文件。
/COPY:復制標記:: 要復制的文件內(nèi)容(默認為 /COPY:DAT)。
(復制標記: D=數(shù)據(jù),A=屬性,T=時間戳)。
(S=安全=NTFS ACL,O=所有者信息,U=審核信息)。
/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ā)現(xiàn)多于 n 個更改時再次運行。
/MOT:m :: 監(jiān)視源;如果更改,在 m 分鐘時間后再次運行。
/RH:hhmm-hhmm :: 可以啟動新的復制時運行的小時數(shù) - 時間。
/PF :: 基于每個文件(而不是每個步驟)來檢查運行小時數(shù)。
/IPG:n :: 程序包間的間距(ms),以釋放低速線路上的帶寬。
/SL :: 對照目標復制符號鏈接。
/MT[:n] :: 使用 n 個線程進行多線程復制(默認值為 8)。
n 必須至少為 1,但不得大于 128。
該選項與 /IPG 和 /EFSRAW 選項不兼容。
使用 /LOG 選項重定向輸出以便獲得最佳性能。
/DCOPY:復制標記:: 要復制的目錄內(nèi)容(默認為 /DCOPY:DA)。
(復制標記: D=數(shù)據(jù),A=屬性,T=時間戳)。
/NODCOPY :: 不復制任何目錄信息(默認情況下,執(zhí)行 /DCOPY:DA)。
/NOOFFLOAD :: 在不使用 Windows 復制卸載機制的情況下復制文件。
2、文件選擇選項
/A :: 僅復制具有存檔屬性集的文件。
/M :: 僅復制具有存檔屬性的文件并重置存檔屬性。
/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 :: 假設 FAT 文件時間(2 秒粒度)。
/DST :: 彌補 1 小時的 DST 時間差。
/XJD :: 排除目錄的接合點和符號鏈接。
/XJF :: 排除文件的符號鏈接。
/IM :: Include Modified files (differing change times).
3、 重試選項
/R:n :: 失敗副本的重試次數(shù): 默認為 1 百萬。
/W:n :: 兩次重試間的等待時間: 默認為 30 秒。
/REG :: 將注冊表中的 /R:n 和 /W:n 保存為默認設置。
/TBD :: 等待定義共享名稱(重試錯誤 67)。
/LFSM :: 在低可用空間模式下運行,啟用復制暫停和繼續(xù)(參見“備注”)。
/LFSM:n[KMG] :: /LFSM,指定下限大小(以 n [K:kilo、M:mega、G:giga] 字節(jié)為單位)。
4、日志記錄選項
::
/L :: 僅列出 - 不復制、添加時間戳或刪除任何文件。
/X :: 報告所有多余的文件,而不只是選中的文件。
/V :: 生成詳細輸出,同時顯示跳過的文件。
/TS :: 在輸出中包含源文件的時間戳。
/FP :: 在輸出中包含文件的完整路徑名稱。
/BYTES :: 以字節(jié)打印大小。
/NS :: 無大小 - 不記錄文件大小。
/NC :: 無類別 - 不記錄文件類別。
/NFL :: 無文件列表 - 不記錄文件名。
/NDL :: 無目錄列表 - 不記錄目錄名稱。
/NP :: 無進度 - 不顯示已復制的百分比。
/ETA :: 顯示復制文件的預期到達時間。
/LOG:文件 :: 將狀態(tài)輸出到日志文件(覆蓋現(xiàn)有日志)。
/LOG+:文件 :: 將狀態(tài)輸出到日志文件(附加到現(xiàn)有日志中)。
/UNILOG:文件 :: 以 UNICODE 方式將狀態(tài)輸出到日志文件(覆蓋現(xiàn)有日志)。
/UNILOG+:文件 :: 以 UNICODE 方式將狀態(tài)輸出到日志文件(附加到現(xiàn)有日志中)。
/TEE :: 輸出到控制臺窗口和日志文件。
/NJH :: 沒有作業(yè)標頭。
/NJS :: 沒有作業(yè)摘要。
/UNICODE :: 以 UNICODE 方式輸出狀態(tài)。
5、作業(yè)選項
/JOB:作業(yè)名稱 :: 從命名的作業(yè)文件中提取參數(shù)。
/SAVE:作業(yè)名稱 :: 將參數(shù)保存到命名的作業(yè)文件
/QUIT :: 處理命令行后退出(以查看參數(shù))。
/NOSD :: 未指定源目錄。
/NODD :: 未指定目標目錄。
/IF :: 包含以下文件。
6、備注
以前在卷的根目錄上使用 /PURGE 或 /MIR 導致robocopy 也對“系統(tǒng)卷信息”目錄內(nèi)的文件應用所請求的操作。
現(xiàn)在不再是這種情形;如果指定了任何一項,則 robocopy 將跳過復制會話簡要源目錄和目標目錄中具有該名稱的任何文件或目錄。
The modified files classification applies only when both source
and destination filesystems support change timestamps (e.g., NTFS)
and the source and destination files have different change times but are
otherwise the same. These files are not copied by default; specify /IM
to include them.
Using /LFSM requests robocopy to operate in 'low free space mode'.
In that mode, robocopy will pause whenever a file copy would cause the
destination volume's free space to go below a 'floor' value, which
can be explicitly specified by the LFSM:n[KMG] form of the flag.
If /LFSM is specified with no explicit floor value, the floor is set to
ten percent of the destination volume's size.
Low free space mode is incompatible with /MT, /EFSRAW, /B, and /ZB.
六 robocopy的GUI使用
[可以使用生成腳本]
下載:http://www.dbjr.com.cn/softs/852615.html(UtilitySpotlight2006_11.exe)
截圖:
七 實例
1.復制源目錄下所有文件及其子目錄下所有文件(包括空目錄)到目標目錄
robocopy d:\work e:\back /e /yy
2.復制源目錄下某種文件類型的文件到目標目錄
robocopy d:\work e:\back *.txt *.doc *.bmp *.tif /s
3.復制時不包括某種類型的文件
robocopy d:\work e:\back /e /xf *.tmp *.bak
4.將文件夾移動到目標文件夾
robocopy d:\work e:\look /move /e
5.將操作過程輸出為txt文件
robocopy d:\work e:\back /e /yy /log:123.txt
6.公司常用復制命令:將123目錄下所有內(nèi)容復制到456目錄下,如果有文件重復則自動跳過,不需要加/yy參數(shù)
robocopy e:\123 f:\456 /e /tee /fp /v /np /ns /log+:copylog.txt
7 拷貝文件和目錄且保留原來的時間屬性(但是必須使用win7以后的版本才可以的)
robocopy.exe \\source\A \\dest\A /E /COPY:DAT /DCOPY:T
八 Robocopy詳解
說實話,Windows系統(tǒng)自帶的復制功能不僅功能簡單,而且定制性也不強,每每在對大量文件進行復制、移動、備份時,總少不了繁雜往復的操作。不過幸好,微軟意識到了這一點,為我們提供了一款很強力的復制備份工具:robocopy。
robocopy已被Windows Vista、Windows 7以及Windows Server 2008所集成,網(wǎng)上有網(wǎng)友制作的GUI,有興趣的童鞋可以下載嘗試一下。另外,還在使用xp的童鞋直接在網(wǎng)上下載robocopy GUI吧。
運行方法有很多種,可以使用Win+R,在“運行”窗口中直接輸入命令;或者先啟動CMD命令提示符,在命令提示符窗口中輸入命令;另外一種則是在文本編輯器(如:記事本)中輸入相應命令,保存為*.bat批處理文件雙擊運行即可。
推薦使用批處理文件,這樣子不僅方便了我們保存和修改,還方便了隨時隨地進行調(diào)用。
廢話不多說,下面我們就開始實戰(zhàn)練習。
今天一早,經(jīng)理從Boss那里得到一個任務,說是公司要對一個項目制作一些文檔,需要這個項目的一些原始資料。于是,這個任務又從經(jīng)理那里下派到我手上,按他的要求,需要盡可能快的從有關文件夾中取出合適的內(nèi)容,并且復制到他U盤(盤符為H)Project文件夾中。其具體要求是整理出:txt文本文件、Word文檔、JPG、BMP、TIF圖像。他倒是說得簡單,我面對的可是一個有上百個子文件夾至少5層目錄結構的超級復雜文件目錄樹。
好吧,為了能順利完成,放第一招:
第一招 我想咋復制就咋復制
robocopy D:\Document H:\Project *.txt *.doc *.jpg *.bmp *.tif /s
說明:
參數(shù)"/s"的作用是“除了空文件夾以外的所有子目錄”。若要將文件夾下的所有文件(包括空文件夾)全部復制到目標文件夾,則上述命令應改為:
robocopy D:\Document E:\Home /e
此處參數(shù)"/e"的表示所有子目錄(包括空文件夾)。
第一個任務很順利就完成,經(jīng)理把我叫到辦公室,對我的執(zhí)行效率表示出非常滿意,我長出一口氣,氣剛出到一半,經(jīng)理就開口了:“還要做個項目概覽,你去把一二級目錄下的內(nèi)容再單獨整理出來,還拷貝到我的U盤里。”我暈……
剛才小試牛刀,現(xiàn)在見招拆招,放第二招:
第二招 復制文件隨心所欲
robocopy D:\Document H:\Project *.txt *.doc *.jpg *.bmp *.tif /s /lev:2
說明:
參數(shù)"/lev"表示復制的層級,比如指定為2級,則兩層目錄下的文件會被復制,更多級下面的則會被忽略。
經(jīng)過一番折騰,經(jīng)理對我的滿意度算是越來越高了,但對于他而言,總是有解決不盡、也永遠搞不清的問題,諸如他會在家選擇文件之后按下Ctrl+C,然后第二天來公司在公司電腦上猛按Crtl+V。哎,這不,他又有新問題了。經(jīng)過剛才幾次復制,他那弱小的U盤已經(jīng)經(jīng)不起更多折騰,肚子塞的滿滿的,可是還有大批文件需要用U盤拷貝,經(jīng)理他就撓著頭,想啊想,想啊想,終于想出一個辦法來,先把不用的文件拷貝到計算機上,再把垃圾文件刪除掉!嗯~還真是個好辦法,于是乎,他又叫來了我……
同樣,怕什么~~~接著放招:
第三招 垃圾文件我可不要
其實實現(xiàn)這個要求很簡單,直接在復制的過程中篩選出垃圾文件并且deny掉就好啦~
用如下命令吧:
robocopy H:\Work D:\Work /e /xf *.tmp *.bak
說明:
參數(shù)"/xf"意為指定不執(zhí)行復制操作的文件類型,文件名支持通配符。如果使用參數(shù)"/xd",則表示排除指定的文件夾。
又一項任務順利完成,我哼著小曲回到了自己的辦公室,安安穩(wěn)穩(wěn)的坐在椅子上聽起音樂。一個上午連續(xù)被經(jīng)理所贊賞,那心情叫一個好啊,索性就用音箱吧~動人的旋律不僅飄到我耳朵里,也到了隔壁同事耳朵里,這不,隔壁同事又來了,他表示對我藝術審美很是贊賞,同時,還想拷走我所有音樂文件……
天,我的音樂文件夾有好幾個G之大,而他拿來的U盤才有碎碎的2G,這可怎么是好呢~
想來想去,他覺得只好忍痛割愛,不要MV了。只是還有一個問題,如果用文件類型排除,那將非常麻煩,在這種情況下,我選擇了以下方法:
第四招 大文件我也不要
robocopy F:\music H:\music /e /max:10000000
說明:
使用參數(shù)"/max",可以選擇文件大小上限,其單位為byte。如果是"/min",限定了文件大小的下限。兩個參數(shù)可以同時使用,限制出所需復制的文件大小的范圍。
復制指定修改時間的文件
在日常使用中,免不了要通過文件修改時間篩選出最近的文件。如何實現(xiàn)此功能?通過下列命令:
robocopy D:\Document H:\Project /maxage:5
此條命令的意思為將D:Document下修改時間在5天內(nèi)的文件復制到H:Project下。
參數(shù)"/maxage"表示距離今天最遠的修改時間,凡是修改時間比這個限制還要早的那些文件都不會被復制。參數(shù)"/maxage"可以接受的字符有數(shù)字,或者是日期,表示天數(shù)時數(shù)字要小于1900,表示日期時需要使用"YYYYMMDD"格式。另外一個與之相對應的參數(shù)是"/minage",表示距離今天最近的修改時間限制,比這個時間新的文件將不被復制。
因此,我們在實用環(huán)境下可以利用"/maxage"和"/minage"來共同限制時間范圍。如下例:
robocopy D:\Document H:\Project /maxage:5 /minage:1
此命令則將欲復制的文件范圍限定在修改時間在除今天意外的5天以內(nèi)(是不是有點繞口……我實在描述不清楚了,各位看官請意會吧)。
完全拷貝
在Windows默認的復制粘貼下,如果已存在一個同名文件夾,系統(tǒng)會進行增量復制,而不會進行文件夾的替換操作。如果我們需要使目標文件夾與源文件夾完全相同,也就是說在復制的同時也刪除在目標文件夾里存在但源文件夾里并沒有的文件。則需要使用以下命令:
robocopy D:\Document H:\Project /mir
參數(shù)"/mir"的作用等同于"/purge /e","/purge"表示清理目標文件夾內(nèi)有而源文件夾里沒有的文件和文件夾。通過這個命令,能保證源文件夾和目標文件夾在結構與內(nèi)容上完全相同。此參數(shù)對于創(chuàng)建鏡像備份時是非常有用的。
移動文件
需要移動文件夾,也就是剪貼,需要使用另外兩個參數(shù),先看下例:
robocopy D:\Document H:\Project /move /e
參數(shù)"/move"意為移動,而"/e"則表示復制所有子目錄包括空文件夾(這一點上篇文章有講)。
只拷貝文檔結構
有時我們只需要拷貝一個多級目錄的目錄樹,或者說只需要它的結構,而不需要它的內(nèi)容,參考如下命令:
robocopy c:\windows /s /create c:\empty\windows
這樣,我們就創(chuàng)建了整個Windows文件夾的目錄結構。其中,使用了"/creat"參數(shù),此參數(shù)作用即為生成空的文件結構。
還有另外一種劍走偏鋒的實現(xiàn)方法:
robocopy c:\windows c:\empty\windows /e /lev:5 /minage:19000101
這是使用了普通的復制方法,指定5層目錄,但是卻限制了一個機器上不可能有的一個文件修改日期。這樣,robocopy就只會拷貝走目錄結構,因無文件符合其修改時間限制,因而不會有文件被復制。
不復制隱藏文件
個別情況下文件夾中存在隱私內(nèi)容,在復制的同時又希望被ignore,因為robocopy支持屬性操作,所以只需調(diào)用相關參數(shù)即可。見下例:
robocopy D:\Photo H:\Photo /e /xa:h
參數(shù)"/xa:h"表示將具有隱藏屬性的排除出欲復制的范圍,與之相對應的是參數(shù)"/ia",表示只復制包括指定屬性的文件。
可用的屬性有;R只讀、A存檔、S系統(tǒng)、H隱藏等。
robocopy C:\windows F:\WindowsSysFile /ia:rs
此命令只會將具有只讀屬性的系統(tǒng)文件復制,而不會操作其他文件。
上文說道,robocopy具有對屬性操作的能力,因此,在復制的同時也可以指定文件屬性。
使用參數(shù)"/A+"與"/A-",功能分別是將給定的屬性添加到復制文件,以及,從復制文件中刪除給定的屬性。
例如:
robocopy C:\windows F:\WindowsSysFile /e /A-:rsh
這樣,不僅將所有文件進行了復制,也刪除了諸如只讀、系統(tǒng)、隱藏等屬性,方便了我們在復制之后對文件進行操作和編輯等。
九、軟件對比
【復制測試】
我將一共達7.9G的《阿凡達》高清電影文件,通過Robocopy、系統(tǒng)內(nèi)置的復制功能和Terecopy三項分別復制到相同的目的地,復制過程中基本沒有進行其他系統(tǒng)操作,得出復制完成所需要的時間并比較
1、通過Robocopy命令復制文件,使用最大線程128,花費的時間為6分02秒
2、使用系統(tǒng)內(nèi)置的文件復制功能,使用秒表計時顯示時間為6分22秒
3、使用Terecopy復制,顯示使用5分32秒
測試速度大小結果:Terecopy > Robocopy命令 > 內(nèi)置復制功能,可見Robocopy與專業(yè)的復制軟件在速度上有一定的差距,而且易用性比較差。但是在沒有安裝其他復制軟件的情況下,要想快速復制大量的文件,Robocopy命令還是一個不錯的選擇。
十、實例代碼
因為篇幅有限,特新開一篇文章。
http://www.dbjr.com.cn/article/266276.htm