robocopy

Robocopy.exe 是 微軟在Windows server 2003 Resource Kit Tools 裡面提供的程式來做備份的,現在Windows Vista系統中已經自帶了這個命令行程式。

含義

Microsoft Windows中內置的傳統的“複製和貼上”功能有一些局限性。它在執行簡單的任務(將一個文檔從一個目錄移動到另一個目錄等)時處理得還好,但缺乏 IT 專業人員在工作場所所需的高級功能。例如,複製和貼上操作不包括任何高級復原功能,所以不允許從短暫的網路中斷後進行恢復。特別是當複製完整的目錄時,它還是一個要么全有要么全無的問題。而使用 UI,您無法選擇僅複製新檔案還是複製更新過的檔案。您可以複製單個的檔案、整個目錄或什麼也不複製。

啟動Robocopy。這個強大的工具包含在 Microsoft Windows Server 2003 Resource Kit Tools 中(現在已經集成到Windows Vista與Windows 7),考慮到了上述所有高級功能以及更多功能。Robocopy 支持更多重要的檔案複製任務,從而能夠真正簡化您的工作。我想您將發現最大的好處是,可以創建兩個檔案結構(可以根據您的選擇包括所有子資料夾和檔案)的完全的鏡像副本而不複製任何不需要的檔案。只複製源位置中的新檔案或更新後的檔案。Robocopy 還允許您保留所有相關檔案信息,包括日期和時間戳、安全訪問控制列表 (ACL)及更多內容。

RoboCopy命令的參數詳細說明

Usage :: ROBOCOPY source destination [file [file]...] [options]

用法:: 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 :: 僅創建目錄樹和長度為零的檔案。

/FAT :: 僅使用 8.3 FAT 檔案名稱創建目標檔案。

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

/MON:n :: 監視源;發現多於 n 個更改時再次運行。

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

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

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

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

::

::

檔案選擇選項:

::

/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 :: 包含以下檔案。

/MT:: 啟動多執行緒任務(默認8個執行緒,最大可設128個)。

::

::

操作實例:

:

::

實例一:檔案,想怎么複製就怎么複製

[實現效果]
隨時將源資料夾中的純文本(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.清除所有無用檔案
xxcopyd:\work*.tmp /s /h /yy /rs
/rs表示不複製而直接從源資料夾中刪除指定檔案,/h表示指定隱藏和系統檔案。
2.清除資料夾
xxcopyc: 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”即可。

相關詞條

相關搜尋

熱門詞條

聯絡我們