robocopy - 好用的複製指令
Win7、Server2008之後的cmd均有內建該指令,有別於XCOPY,ROBOCOPY可用的參數更多、實用性與複製效率更高。
只要開啟cmd後,先輸入指令
---------------------------------
robocopy /?
---------------------------------
接著就會出現可用的參數:(參考如下)
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
已啟動 : 2017年9月11日 上午 11:18:39
使用方式 :: ROBOCOPY source destination [file
[file]...] [options]
source :: 來源目錄 (drive:\path 或 \\server\share\path)。
destination :: 目的地目錄 (drive:\path 或
\\server\share\path)。
file :: 要複製的檔案 (名稱/萬用字元: 預設值是
"*.*")。
::
:: 複製選項 :
::
/S :: 複製子目錄,但是空的子目錄例外。
/E :: 複製子目錄,包括空的子目錄。
/LEV:n :: 只複製來源目錄的前 n 層。
/Z :: 在可重新啟動模式複製檔案。
/B :: 在備份模式複製檔案。
/ZB :: 使用可重新啟動模式; 如果拒絕存取,則使用備份模式。
/J :: 使用無緩衝的 I/O 複製 (建議使用於大型檔案)。
/EFSRAW :: 在 EFS RAW 模式複製所有加密檔案。
/COPY:copyflag[s] :: 要為檔案複製什麼內容 (預設值是 /COPY:DAT)。
(複製旗標: D=資料、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 :: 只建立樹狀目錄和長度為零的檔案。
/FAT :: 只使用 8.3 FAT 檔案名稱,建立目的地檔案。
/256 :: 關閉特長路徑 (> 256 個字元) 支援。
/MON:n :: 監視來源; 看到 n 個字元以上時再次執行。
/MOT:m :: 監視來源; m 分鐘後如果變更,則再次執行。
/RH:hhmm-hhmm :: 執行時數 - 新複本可以開始的時間。
/PF :: 根據每一個檔案為基礎,檢查執行時數
(不是根據每一次通過)。
/IPG:n :: 慢速線路可用頻寬,封包之間的差距 (毫秒)。
/SL :: 複製符號連結與目標。
/MT[:n] :: 以 n 個執行緒執行多執行緒複製 (預設值為 8)。
n 必須至少為 1,但不可以大於 128。
此選項與 /IPG 和 /EFSRAW 選項不相容。
使用 /LOG 選項重新導向輸出,以獲得更好的效能。
/DCOPY:copyflag[s] :: 對於目錄,要複製哪些項目 (預設值是 /DCOPY:DA)。
(複製旗標: D=資料、A=屬性、T=時間戳記)。
/NODCOPY :: 不複製目錄資訊 (預設會執行 /DCOPY:DA)。
/NOOFFLOAD :: 複製檔案 (不使用「Windows 複本卸載」機制)。
::
:: 檔案選取選項 :
::
/A :: 只複製已設定保存屬性的檔案。
/M :: 只複製包含保存屬性的檔案並重設。
/IA:[RASHCNETO] :: 只包含附帶任何指定屬性的檔案。
/XA:[RASHCNETO] :: 排除附帶任何指定屬性的檔案。
/XF
file [file]... :: 排除符合指定名稱/路徑/萬用字元的檔案。
/XD
dirs [dirs]... :: 排除符合指定名稱/路徑的目錄。
/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 日後使用的檔案。
(如果 n < 1900 則 n = n 日,否則 n = YYYYMMDD 日期)。
/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:file :: 輸出狀態至記錄檔 (覆寫現有的記錄檔)。
/LOG+:file :: 輸出狀態至記錄檔 (附加至現有的記錄檔)。
/UNILOG:file :: 輸出狀態至記錄檔,變成 UNICODE (覆寫現有的記錄檔)。
/UNILOG+:file :: 輸出狀態至記錄檔,變成 UNICODE (附加至現有的記錄檔)。
/TEE :: 輸出至主控台視窗,以及記錄檔。
/NJH :: 沒有工作標頭。
/NJS :: 沒有工作摘要。
/UNICODE :: 輸出狀態為 UNICODE。
::
:: 工作選項:
::
/JOB:jobname :: 從命名的工作檔案取得參數。
/SAVE:jobname :: 將參數儲存至命名的工作檔案
/QUIT :: 處理命令列後結束 (檢視參數)。
/NOSD :: 未指定來源目錄。
/NODD :: 未指定目的地目錄。
/IF :: 包含以下檔案。
::
:: 備註 :
::
在磁碟區的根目錄上使用 /PURGE 或 /MIR 將會
導致 robocopy 也對 System Volume
Information
目錄內的檔案上套用要求的作業。如果這並非
預期,則可以使用 /XD 參數來指示 robocopy
略過該目錄。
--------------------------------------------------------------------------------------
=====================================================
個人常用範例,需求有
1.
需要將網路磁碟機來源A資料夾複製到目的地B資料夾
2.
且做定期的差異備份,比對只要有修改過的、新出現的檔案/資料夾,就會做備份,且會刪除目的地與來源端不相符的檔案、資料夾
3.
超過512mb的檔案就不作複製(單位為位元組)
4.
失敗重試1次(預設三次、每次失敗後等待30秒再試);
5.
每次執行,在指定目錄產生log檔案,如果有多筆複製指令,會複寫在當天檔案
6.
每個檔案複製時不顯示百分比(不然log檔會有很多無意義的資訊、且變得很龐大)
7.
顯示每個比對/複製的檔案開始/結束時間(有log檔的話則不會出現在執行視窗,記錄在log檔內)
所以我會用下列指令:(其指令說明可參考robocopy /?)
----------------------------------------------------------------------------------------
robocopy \\192.168.1.7\共用 \\192.168.4.7\共用 /e /xo /purge /max:524288000
/R:1 /NP /ETA /LOG+:H:\nas_robocopy_log\ %date:~0,4%%date:~5,2%%date:~8,2%.log
----------------------------------------------------------------------------------------
補充說明:雖然也可以用 /mir 參數,直接做鏡像,作用同
/e /purge,但是實作下來效率似乎不若/e /xo
/purge,加上 /xo,可以排除較舊檔案,增加複製的效率,也比較符合自己的需求
設定完成,在欲執行的主機內,加入排程工作即可