標籤:
經常進行檔案管理操作的朋友們,不滿意於Windows系統內建的複製功能,因為它太龜速了。於是大家就使用FastCopy、TeraCopy之類的軟體來加速複製,但是你是否知道Windows 7已經內建快速複製的功能?
這項功能就是RoboCopy,它是一個命令列的目錄複寫命令,自從Windows NT 4.0 開始就成為windows 資源工具包的一部分,然後在Windows Vista、Windows 7和 Windows Server 2008採用作為標準的功能。Windows 7的此項功能也得到升級——已經可以支援多線程了,這就意味著可以大大提升複製速度。而且該功能可以建立兩個檔案結構完全的鏡像副本而不複製任何不需要的重複檔案,同時還允許您保留所有相關檔案資訊,包括日期和時間戳記、安全存取控制清單(ACL))等等。下面先看看這條命令的用法吧:
命令文法:ROBOCOPY source destination [file [file]…] [options]
源:來源目錄(磁碟機:\路徑或\\伺服器\共用\路徑)
目標:目標目錄(磁碟機:\路徑或\\伺服器\共用\路徑)
檔案:要複製的檔案(名稱/萬用字元: 預設為 "*.*")
複製選項
/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:僅建立分類樹和長度為零的檔案。
/FAT:僅使用 8.3 FAT 檔案名稱建立目標檔案。
/256:關閉超長路徑(> 256 字元)支援。
/MON:n:監視源;發現多於 n 個更改時再次運行。
/MOT:m:監視源;如果更改,在 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 位元組的檔案。
/MIN:n:最小的檔案大小 – 排除小於 n 位元組的檔案。
/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:以位元組列印大小。
/NS:無大小 – 不記錄檔案大小。
/NC:無類別 – 不記錄檔案類別。
/NFL:無檔案清單 – 不記錄檔案名稱。
/NDL:無目錄列表 – 不記錄目錄名稱。
/NP:無進度 – 不顯示已複製的百分比。
/ETA:顯示複製檔案的預期到達時間。
/LOG:檔案:將狀態輸出到記錄檔(覆蓋現有日誌)。
/LOG+:檔案:將狀態輸出到記錄檔(附加到現有日誌中)。
/UNILOG:檔案:以 UNICODE 方式將狀態輸出到記錄檔(覆蓋現有日誌)。
/UNILOG+:檔案:以 UNICODE 方式將狀態輸出到記錄檔(附加到現有日誌中)。
/TEE:輸出到控制台視窗和記錄檔。
/NJH:沒有作業標題。
/NJS:沒有作業摘要。
/UNICODE:以 UNICODE 方式輸出狀態。
作業選項
/JOB:作業名稱:從命名的作業檔案中提取參數。
/SAVE:作業名稱:將參數儲存到命名的作業檔案
/QUIT:處理命令列後退出(以查看參數)。
/NOSD:未指定來源目錄。
/NODD:未指定目標目錄。
/IF:包含以下檔案。
這麼多的命令我不會用怎麼辦?你可以到官網下載微軟推出的Robocopy GUI,它提供互動介面使得使用簡化不少:
【複製測試】
我將一共達7.9G的《阿凡達》高畫質 DVD檔案,通過Robocopy、系統內建的複製功能和Terecopy三項分別複製到相同的目的地,複製過程中基本沒有進行其他系統操作,得出複製完成所需要的時間並比較
1、通過Robocopy命令複製檔案,使用最大線程128,花費的時間為6分02秒
2、使用系統內建的檔案複製功能,使用秒錶計時時間顯示為6分22秒
3、使用Terecopy複製,顯示使用5分32秒
測試速度大小結果:Terecopy > Robocopy命令 > 內建複製功能,可見Robocopy與專業的複製軟體在速度上有一定的差距,而且易用性比較差。但是在沒有安裝其他複製軟體的情況下,要想快速複製大量的檔案,Robocopy命令還是一個不錯的選擇。
--------------------------------------------------------------------【例子】-------------------
執行個體一:檔案,想怎麼複製就怎麼複製
[實現效果]
隨時將源檔案夾中的純文字(TXT)、Word文檔(DOC)還有BMP、TIF影像檔複製到目標檔案夾中
,這是在“資源管理員”中直接拖放所做不到的。[簡單命令]
robocopy d:\work e:\back *.txt *.doc *.bmp *.tif /s
[參數講解]
將d:\work檔案下的TXT、DOC、BMP、TIF複製到e:\back檔案夾,其他檔案則不複製。/s是表示包括
除空檔案下的所有子目錄,如果沒有則僅複製d:\work下的檔案而不包括子目錄。
[舉一反三]
(1)如果要將檔案夾下的所有檔案包括空檔案夾全部複製到目標檔案夾,命令為:robocopy
d:\work e:\back /e
/e表示複製所有子目錄包括空檔案夾。
(2)如果只想複製兩個層級內的檔案(再下的層級裡的檔案則不拷貝),輸入命令:robocopy
d:\work e:\back /e /lev:2
/lev:2表示複製的層級,比如指定層級後d:\work\soft(二級)下的檔案會被複製,而
d:\work\soft\office(***)下的檔案則不被複製。
執行個體二:垃圾檔案不複製
[實現效果]在備份資料時,不可避免會將類似於*.bak、*.tmp的垃圾檔案也複製到目標檔案夾,用
Robocopy可以將我們經常碰到的垃圾檔案在拷貝時就清理出家門,從而產生一個乾乾淨淨的檔案夾。
[簡單命令]
robocopy d:\work e:\back /e /xf *.tmp *.bak
[參數講解]
/xf為指定不執行複製操作的檔案類型,後面的檔案名稱支援萬用字元。如果參數為/xd,則表示排除後
面指定的檔案夾。
執行個體三:大檔案 我不要
[實現效果]
複製的時候,為了節省時間,需要將一些大檔案暫時不拷貝,等有空閑時間時,再執行複製操作不
遲。
[簡單命令]
robocopy d:\work e:\back /e /max:6000000
[參數講解]
僅複製不大於6000000bytes的檔案,/max:後直接接數值,數值單位為byte。如果是/min:1000,則
複製不小於1000bytes的檔案。兩個參數可以同時使用,界定複製檔案大小的範圍。
執行個體四:只要這一周修改的檔案
[實現效果]
這一周處理了哪些文檔?編輯了那些檔案?將這些修改了的文檔複製到一個檔案夾下,再好好回味
一下。本例就是要將d:\work中最近七天內建立或修改了的TXT、DOC、XLS、PPT等文檔,複製到e:\look
目錄下。
[簡單命令]
robocopy d:\work e:\look /s *.txt *.doc *.xls *.ppt /maxage:7
[參數講解]
/maxage:表示最遠修改時間的,修改時間比這個還要舊的檔案將不會被複製。/maxage:後可接數字
,也可以接日期,數字小於1900時表示天數,否則就得用YYYYMMDD來表示具體的日期
如/maxage:20040210表示2004年2月10日後被修改的檔案才允許複製。與之相對應的參數
是/minage,表示最近修改時間,比這個時間新的檔案將不被複製。
[舉一反三]
robocopy d:\work e:\look /s *.txt *.doc *.xls *.ppt /maxage:7 /minage:1
則表示近七天內除今天外修改的檔案才允許被複製。
與修改時間相對的還有最近訪問時間,/maxage指最遠訪問時間,比這個時間老的檔案將不被複製。
/minage是指最近訪問時間,比這個時間新的檔案將不被複製。
執行個體五:我的文件排排站
[實現效果]
上例中複製時,所有的文檔都會帶來本身的路徑資訊,文檔是會將其所存放的檔案夾也複製過來。
這給我們的翻閱查看帶來很多不便,得單擊多層檔案夾才能看到檔案,能不能將所有的文檔直接複製到
一個檔案夾下呢?這個需要用XXCOPY來實現。
[簡單命令]
xxcopy d:\work e:\look /s /in*.txt /in*.doc /sg /yy /da:2004-02-02 /DB:2004-02-
10/DA:1997-01-01
[參數講解]
此命令將d:\work中從2004年2月2日到2月10產生的 TXT、DOC檔案全部直接複製到e:\look目錄下,
不建立子檔案夾,開啟e:\look就能看到所有檔案。XXCOPY和Robocopy的文法參數還是有較大差異的,表
示指定檔案類型時,XXCOPY會用/in*.*,表示日期時/da為在指定時間後,/db為在指定時間前,日期的
表示為YYYY- MM-DD。
另外,/sg表示複製檔案到同一檔案夾,/yy表示在所有要求使用者應答的地方都自動認為是Yes,在執
行過程中不需要使用者幹預。
執行個體六:完全複製
[實現效果]
我們一般採取的複製方式預設是差異複寫,即根據檔案的大小、修改時間將源檔案夾裡的內容向目
標檔案夾複製,久而久之,目標檔案夾裡就可能存在大量源件夾裡早已經刪除且無用的檔案和檔案夾。
如果要讓備份完全相同,即拷貝時刪除在目標檔案夾裡存在但源檔案夾裡並沒有的檔案。
[簡單命令]
robcopy d:\work e:\look /mir
[參數講解]
/mir的作用等同於/purge /e,/purge表示清理目標檔案夾有而源檔案夾裡沒有的檔案(夾)。通過
這個命令,能保證源檔案夾和目標檔案夾結構與檔案完全相同。這在建立鏡像備份時,非常有用。
執行個體七:移動檔案
[實現效果]
我們前面講的都是複製,如果我們要將檔案夾移動到目標檔案夾,如何操作呢?
[簡單命令]
robocopy d:\work e:\look /move /e
[參數講解]
其中,/move表示移動。
執行個體八:我只要檔案夾骨架
[實現效果]
筆者的工作需要周期性地建立和整理大量的檔案夾,每次的檔案夾結構一樣,只是檔案不盡相同。
如果是以前,就得一個一個簡單重複去製作,而現在就不需要了。Robocopy和XXCOPY可以讓你輕鬆實現
複製檔案夾結構。
[簡單命令]
xxcopy d:\work e:\mystruct /t /yy /dl3
[參數講解]
將d:\work的三層檔案夾結構複製到e:\mystruct中。其中/t表示建立檔案夾結構,/dl3表示複製的
檔案夾結構為***,數字可以自行輸入,如果沒有此參數,預設建立整個檔案夾結構。
Robocopy建立檔案夾相對要麻煩一些,/create參數不僅要建立結構,還要建立檔案夾下所有檔案的
0位元組檔案,並非真正的結構,我們只好劍走偏鋒了。
robocopy d:\work e:\mystruct /e /lev:3 /minage:19000101
為Robocopy指定一個不可能建立檔案的時間,因為有參數/e 的作用,雖然沒有檔案符合要求(你機
器裡沒有早於1900年1月1日的檔案),但Robocopy還是會忠實地建立檔案夾,這樣就達到了組建檔案夾
結構的目的。另外,/lev:3表示複製檔案夾的層級,同樣可以自行輸入。
執行個體九:隱藏檔案我不要
[實現效果]
在預設狀態下,隱藏檔案是並不顯示的,但在複製的過程中,它還會隨著檔案夾一起被複製。可不
可以將這些隱藏檔案排除在複製範圍之外呢?
[簡單命令]
robocopy d:\work e:\back /e /xa:h
[參數講解]
Robocopy支援對屬性進行操作。上面的命令將複製源檔案夾中全部檔案,但全部具有隱藏屬性的文
件將不會被複製。/xa:h,表示將具有隱藏屬性的排除出複製範圍,與之相對應的是/ia,表示包括只對
擁有指定屬性的執行操作。屬性有R:唯讀,A:存檔,S:系統,H:隱藏等幾種供選擇。
[舉一反三]
(1)此外,Robocopy還有/a+、/a-等參數對檔案屬性進行操作,分別表示在檔案被拷貝後為檔案添
加、去除某屬性。
robocopy d:\work e:\back /ia:rs
表示只複製具有唯讀和系統屬性的檔案。
(2)robocopy c: d: /-a:rsh
表示將檔案拷貝到D盤後,將拷貝產生的檔案的唯讀、系統、隱藏屬性去掉,以方便查看和修改。
執行個體十:NTFS許可權跟著走
[實現效果]
在使用Windows 2000、Windows XP時,在多使用者使用一台電腦時或管理伺服器時,經常要為檔案夾
指定使用者訪問和修改的許可權(1,需要分區為NTFS)。不過,用一般的複製方式無法保留我們設定的
許可權,這在伺服器備份時意味著我們得重新設定使用者權限。不過,Robocopy可以讓我們在複製檔案的時
候,將屬性、使用者權限、所有者都可以一併複製到目標檔案夾中。
備份雙友鄰精彩5例-Robocopy和xxcopy全掌握
[簡單命令]
robocopy d:\work e:\back /e /copyall
[參數講解]
/copyall等於/copy:datsou,表示將所有源檔案夾的資訊複製到目標檔案夾中,其中D:檔案資料,
A:檔案屬性,T:時間資訊,S:許可權資訊,O:所有者資訊,U:審核資訊。
[舉一反三]
如果源檔案夾的許可權被修改,需要同樣更新目標檔案夾的許可權時,我們不必再重複復制,只需輸入
robocopy d:\work e:\back /is /copy:sou
如果沒有/copy參數,預設為/copy:dat,沒有後面三項的資訊。
執行個體十一:集中備份到檔案伺服器
[實現效果]
希望每天能夠把相應資料備份到檔案伺服器上,以免資料丟失。
[簡單命令]
robocopy d:\work \ctips_serverarticlesshare /e /copyall
[參數講解]
從中可以看出,robocopy完全支援檔案伺服器共用資料夾資料的拷貝。
[舉一反三]
(1)如果我們建立了一個環境變數,如定義%databack%為\ctips_serverarticles\back,那隻要輸
入相應的命令:robocopy d:\work %databack% /e /copyall 即可把d:\work下的檔案全部備份到
\ctips_serverarticles\back下。當然,如果\ctips_serverarticles\back空間不夠時,只要更換環境
變數的值到其他檔案夾,如\ctips_serverarticles ewback,上述命令無需更改就可以反資料拷貝到新
的檔案夾中。
(2)如果你只想把資料備份到共用資料夾中以你的機器名為名字的共用資料夾中,使用xxcopy會更
方便:xxcopy d:\work \ctips_serverarticles/$HOST$ /e /yy 其中/$HOST$表示你的機器名,如你的
機器名為CTIPS_SYJ,那會把d:\work 檔案夾下的檔案拷貝到\ctips_serverarticles\CTIPS_SYJ檔案夾
下。如果你的機器名為CTIPS_MLB,那執行上述命令後就可以把d:\work 檔案夾下的檔案拷貝到
\ctips_serverarticles\CTIPS_MLB檔案夾下。由於同區域網路內的機器名字不會相同,執行上述命令後就
可以保證資料不會被拷貝到同一檔案夾下。
執行個體十二:一動就備份
[實現效果]
有些工作內容非常重要,需要時時刻刻注意備份,可是我們哪裡有這麼好記性和耐性呢?這事,還
是交給 Robocopy來做吧。Robocopy能時時監視要備份的檔案夾,只要檔案夾修改到一定時間和程式,
Robocopy就會立即開始備份。它會一直監看資料夾,除非使用者自己終止。
[簡單命令]
robocopy d:\work e:\back /e /copyall /mot:1 /mon:2
[參數講解]
上述命令表示複製檔案夾所有資訊到目標檔案夾並進行監視。執行此命令後,命令提示字元視窗2
所示。一旦時間過了一分鐘,並且源檔案夾至少有或2處以上的修改,Robocopy就會自動啟動另一個進程
,執行上述備份操作。Robocopy能監視源檔案夾結構、檔案和檔案夾名稱、大小、最後修改時間,在這
裡,甚至連屬性和許可權等資訊被修改時,Robocopy也會記為修改次數。
備份雙友鄰精彩5例-Robocopy和xxcopy全掌握
/mot後接的是時間(分鐘),是指Robocopy執行操作的最短時間;/mon後接的是最少檔案修改個數
。在監視過程中,會自動記錄時間和修改的次數,只有同時符合以上兩個條件時,Robocopy才開始執行
,執行完成後,這兩個資料會自動清零,並重新開始監看資料夾,除非使用者關閉命令提示字元視窗或按下
Ctrl+Break鍵。
[舉一反三]
如果你要開機就監視並備份相應檔案夾,則可以把上述命令放到“啟動”組中。
執行個體十三:不到時間不備份
[實現效果]
複製的過程總會佔用系統資源,如果能設定在自己不在電腦邊上的時候開始複本備份,就會方便得
多。比如,每天5:50下班,希望下班後,到達6點時,Robocopy自動開始備份相應資料。
[簡單命令]
robocopy d:\work e:\back /e /rh:1800-1830
[舉一反三]
運行後,複製操作將會等待至指定時間開始(3)。其中,RH格式為/RH:hhmm-hhmm,指定
Robocopy開始的時間段,在這個時間段外,拷貝會被暫停。時間為24小時格式,4個數字長,從0000到
2359,而且兩個數字不能相同。
備份雙友鄰精彩5例-Robocopy和xxcopy全掌握
執行個體十四:計劃任務備份
以上的到時間備份、監看資料夾備份方式,每次重啟系統會都會要重新執行以上命令,還遠遠不夠
智能,如果能和Windows的計劃任務配合,所有問題就迎刃而解了。以我們要在每天10:00自動調用
Robocopy開始監視備份檔案夾為例,說一說計劃任務與Robocopy的攜手。
第一步:建立BAT檔案
建立一個批次檔autobak.bat,輸入如下命令
robocopy d:\work e:\back /e /copyall /mot:1 /mon:2
第二步:建立計劃任務
選擇“開始→設定→控制台”,雙擊“任務計劃”表徵圖。把autobak.bat批次檔拖放到“任務計劃
”視窗,然後雙擊新產生的autobak.bat表徵圖,在快顯視窗中設定其屬性。
第三步:設定開始時間
切換到“排程”標籤,單擊“任務計劃”下拉式清單方塊,從中選擇“每天”,“開始時間”設定為
10:00,單擊“進階”可以設定起止的日期(4)。
通過上述設定後,到了設定的時間,機器就會自動備份執行批次檔,自動備份並監看資料夾。
備份雙友鄰精彩5例-Robocopy和xxcopy全掌握
執行個體十五:清理檔案也拿手
除了一般的複製功能,XXCOPY還有檔案清理功能,可以將不需要的檔案快速清理出硬碟。以下命令
會清除檔案和檔案夾,請先建立測試檔案夾掌握其操作後再對檔案夾進行操作。
1.清除所有無用檔案
xxcopy d:\work*.tmp /s /h /yy /rs
/rs表示不複製而直接從源檔案夾中刪除指定檔案,/h表示指定隱藏和系統檔案。
2.清除檔案夾
xxcopy c: emp /rmdir /db:2002-01-01 /yy
刪除c: emp中在2002年1月1日前的修改的檔案夾。
3.刪除空檔案夾
xxcopy c: emp /rmdir /sz:0 /yy
刪除c: emp下所有空檔案夾,/sz:0指定大小為0的檔案(夾)。
4.刪除0位元組檔案
xxcopy c: emp*.* /sz:0 /s /h /yy /rs
通過以上四種方式的組合,我們可以輕鬆實現對檔案及檔案夾的整理工作。
最後,還有一幾個小技巧告訴你,希望能有利於你更好地使用XXCOPY和Robocopy。
★將命令變成任務
在Robocopy加上“/save:任務名”可以將當前操作記錄為任務檔案,通過“/job:任務名”就可以方便調
用,不需要再輸入一長串的命令了。此任務檔案可以用純文字編輯器(如記事本)來編輯。
★將複本備份過程錄下來
預設情況下,Robocopy的操作過程只是在命令提示字元中顯示,我們可以讓它把操作過程輸出為TXT檔案,
加上“/log:檔案名稱.txt”即可。
使用RoboCopy 命令