伊莉討論區

標題: 好用的同步"指令" robocopy [打印本頁]

作者: tibandyli    時間: 2015-9-1 03:16 PM     標題: 好用的同步"指令" robocopy

本帖最後由 snowflying 於 2015-9-18 11:16 PM 編輯

最近發現一個從vista之後的windows裡,的好用工具 robocopy。

拿來同步工作資料到隨身碟,無敵方便,而且不需要俱有系統管理者權限就能執行(當然也不需要再另外安裝軟體)。
分享給有同樣需求的大大們~


Vista以後的作業系統 (含 Windows 7 ),不須靠外來任何工具程式,XP,2000,2003可由Windows Server 2003 時出的ResourceKit之Tools,裡面約126個命令。
Microsoft官網下載 ResourceKit ,下載完後,直按安裝,安裝程式會自動將 ResourceKit 的資料夾加入Path環境變數,所以可以馬上使用。

Windows下,也許會習慣用copy或Xcopy指令的方式來作檔案的拷貝。如果在您的資料夾下,有比較特殊的檔名或太多層的資料夾深度,那這些常見的拷貝也許就會失敗,尤其一次要拷貝很多檔案時,更容易會因單一檔案失敗而造成需重頭來過。

Robocopy除了是個資料夾/檔案的複製指令外,基本上已經作到了「同步」的功能及滿足「差異化備份」的需求。

如果需求就是差異化備份,那常用的參數為:
robocopy  來源  目的  /e  /xo  /purge
/e :代表複製子資料夾,含空的資料夾
/xo :排除較舊的檔案,意思是來源端沒有比目的端新時,就不複製(差異化備份,很重要的參數)
/purge :刪除來源中,不再存在的資料夾或檔案(這個也是差異化備份,很重要的參數)

範例架構  (將E槽的\123資料夾 備份到 U槽的\456資料夾):
robocopy E:\123 U:\456 /MIR /MT:100

後面的"/MIR" (為備份模式)以來源為主,對目的刪除多餘檔案 (該指令只會改寫有異動的檔案!!對於電腦上班族儲存檔案極為方便!!)
"/MT" 指的是通道數量,一般而言設定100就夠了。另還可替換以下功能:
"/E" (複製模式) 包含子目錄一併複製
"/S" (複製模式) 包含子目錄一併複製,但空目錄除外
"/MOVE" (移動模式) 移動來源到目的,並刪除來源

把硬碟 E: 的全部資料 (含資料夾與檔案) 複製到硬碟 U:,保留檔案時間,也不刪除 E: 上的資料。組合出來的參數如下:
robocopy E:\ U:\ /e /dcopy:t /xo /xa:sh /xj /unicode /eta

Windows 系列的指令沒有大小寫之分。這些參數所代表的如下:
E:\ :: 檔案來源 硬碟 E:
U:\ :: 檔案目的地 硬碟 U:
/e :: 複製所有的子資料夾,包含空的資料夾。
/dcopy:t :: 保留所有檔案與資料夾的時間戳記。
/xo :: 如果已有相同的檔案,且時間相同或較舊就跳過。注意不是零 -
/xa:sh :: 跳過屬性為 s (系統) 與 h (隱藏) 的檔案。因為是複製整個硬碟,預設會連 Windows 隱藏的系統檔都複製過去,所以要排除。
/xj :: 跳過 NTFS junction 檔案,關於 junction 請參考這篇文章。
/unicode :: 畫面上的進度資訊以 unicode 顯示,若是操作非中文及英文檔名,這參數可以正確顯示名稱。有無開啟並不影響檔案複製、移動等操作,只是差在畫面顯示正不正確。
/eta :: 顯示預計完成時間。

ps. 這個指令跟其他的 dos / windows 指令不一樣的地方是檔案名稱並不是接在資料夾後面的。
另要複製 C:\MyDocuments 底下的 .txt、.bmp、.jpg 到 U:\BackUp,那指令要組合成…
robocopy C:\MyDocuments\ U:\BackUp\ *.txt *.bmp *.jpg
反過來,如不想複製這些檔案,需加上參數 /xf
robocopy C:\MyDocuments\ U:\BackUp\ /xf *.txt *.bmp *.jpg

以下列出參數說明: (也可用「robocopy /?」 取得說明)
------------------------------------------------------------------------------
Usage :: ROBOCOPY source destination [file [file]...] [options]
source 來源:: 原始目錄(驅動器:\路徑或\\伺服器\共用\路徑)。
destination目錄:: 目標目錄(驅動器:\路徑或\\伺服器\共用\路徑)。
file 文件:: 要複製的檔(名稱/萬用字元: 默認為 "*.*")。
------------------------------------------------------------------------------
複製選項:
------------------------------------------------------------------------------
/S :: 複製子目錄,但不複製空的子目錄。
/E :: 複製子目錄,包括空的子目錄。
/LEV:n :: 僅複製原始目錄樹的前 n 層。
/Z :: 在可重新開機模式下複製檔。
/B :: 在備份模式下複製檔。
/ZB :: 使用可重新開機模式;如果拒絕訪問,請使用備份模式。
/EFSRAW :: 在 EFS RAW 模式下複製所有加密的檔。
/COPY:複製標記:: 要複製的檔內容(預設為 /COPYAT)。
   (複製標記: D=資料,A=屬性,T=時間戳記)。
   (S=安全=NTFS ACL,O=所有者資訊,U=審核資訊)。
/DCOPY:T :: 複製目錄時間戳記。
/SEC :: 複製具有安全性的檔(等同於 /COPYATS)。
/COPYALL :: 複製所有檔資訊(等同於 /COPYATSOU)。
/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 :: 包含以下檔。
================

我覺得它的同步反而比較像是單向的備份或是差異備份…要做到雙向就比較沒辦法。
所以…我會用雙向同步(備份)的方法來做…如果大大只是要備份的話,用上面的範例就很好用了。

因為資料可能會在兩邊更新。所以,無論到哪一台都做雙向的同步(差異備份)…
robocopy D:\abc U:\abc /W:0 /R:1 /E /TEE /NFL /NDL /XO /COPYALL /ETA /LOG+:C:\robocopy_log\%date:~0,4%%date:~5,2%%date:~8,2%.log
robocopy D:\abc U:\abc /W:0 /R:1 /E /TEE /NFL /NDL /XO /COPYALL /ETA /LOG+:C:\robocopy_log\%date:~0,4%%date:~5,2%%date:~8,2%.log

記得要先建立C:\robocopy_log這個目錄來存log…
至於缺點…就是如果要刪資料…就要自己手動去兩邊一起刪了…
如果大大有其它用法的建議,也歡迎交流。


作者: lp.tsai    時間: 2015-11-22 07:17 AM

Robocopy的指令其實用在NAS的Copy資料 Performance比較也是很好用喔!
過去做過的專案是拿Robocopy測Performance先取得初步的報告,然後才用
其他專業的DiskIO軟體測試,做Performance比較報告
作者: cceric    時間: 2015-11-30 10:18 AM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: kcah    時間: 2015-12-29 12:15 PM

工作的 時候 時常 需要 在 網盤 上面 下載 比較大的文件...

但是 網盤 又 常常 會斷... 雖然 用 robocopy 還是會斷....

不過, 至少 它會自動重下 我又 不用 在公司 電腦上 裝外來的軟件...
作者: tristervampire    時間: 2016-1-3 02:37 PM

在xp中還是要先裝resource tools才能使用,但參數和在win7中有一點點的不同,工作上是拿來做固定的異地差異備份並留log以便觀察,傳輸速度要視網路架構和機器IO觀察,真的是不錯的一項好工具




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!