robocopy,我主要是用來進行局域網數據庫備份使用,不得不說這個小工具速度還是蠻快的,同時屬於系統內置功能,用着還算方便。
這項功能就是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的《阿凡達》高清電影文件,通過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”即可。