你還在使用 copy和 xcopy指令嗎?其實 Windows本身就有一個內建的超強複製指令叫 Robocopy,就能讓你快速備份和同步資料。
Robocopy指令早期在 Windows 2003 Server上必需安裝 Windows Resource Kits。但現在在Windows Vista /7 /8 /10 已經內建 Robocopy指令。
你可以開啟命令提示字元 cmd,輸入「robocopy /?」查詢 Robocopy指令使用方式:
以下我們實際來做個範例:
目標是同步資料並將權限複製到目標端,並產生一個檔名為當天日期的log檔放置於c:\robocopy_log\下
首先找一台PC
or 伺服器,需有權限讀寫”來源”和”目的”端
將來源mapping 成網路磁碟 S
net use S:\\192.168.0.2
將目的mapping 成網路磁碟 T
net use T:\\192.168.0.3
【範例一】同步S槽和T槽,並輸出以日期命名的log檔
robocopy S:\ T:\ /R:0 /W:0 /E /TEE /NFL /NDL /XO /PURGE /COPYALL /LOG+:C:\robocopy_log\%date:~0,4%%date:~5,2%%date:~8,2%.log
【範例二】同步S槽和T槽下的Test資料匣,並輸出以日期和時間命名的log檔
robocopy S:\Test T:\Test /MIR /COPYALL /NDL /NFL /MT:100 /LOG+:C:\robocopy_log\%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.log
若上方範例亂碼,請自行下載範例:
👉範例一 範例二以下是比較常用的參數說明
/R:n
失敗複本的重試次數:預設值是 1 百萬次。
/W:n
重試之間等候時間:預設值是 30 秒。
/E:
複製子目錄,包括空的子目錄。
/TEE:
輸出至主控台視窗,以及記錄檔。
/NFL: 沒有檔案清單 -
不記錄檔案名稱。
/NDL: 沒有目錄清單 -
不記錄目錄名稱。
/XO:
排除較舊的檔案。
/PURGE: 刪除來源已經不存在的目的地檔案/目錄。
/COPYALL: 複製所有檔案資訊(相當於 /COPY:DATSOU)。
/LOG+:file: 輸出狀態至記錄檔 (附加至現有的記錄檔)。
/MIR:
鏡像樹狀目錄 (相當於 /E 加 /PURGE)。
/MT[:n]: 以
n個執行緒執行多執行緒複製 (預設值為 8)。
n 必須至少為 1,但不可以大於 128。
此選項與 /IPG 和 /EFSRAW 選項不相容。
使用 /LOG 選項重新導向輸出,以獲得更好的效能。
你可以將下方存成BAT檔執行:
@echo off
net use S: \\192.168.0.2
net use T: \\192.168.0.3
robocopy S:\ T:\
/R:0 /W:0 /E /TEE /NFL /NDL /XO /PURGE /COPYALL
/LOG+:C:\robocopy_log\%date:~0,4%%date:~5,2%%date:~8,2%.log
net use S:
/delete
net use T: /delete
@echo "請確認log file是否有錯誤"
pause
實際測試範例參考:
▼延伸閱讀
👉 使用 xcopy | robocopy 「複製目錄結構不含檔案」的兩種作法
👉 Windows Command 教學 | 教你使用forfiles 尋找及刪除過期的檔案
👉 產生樹狀目錄結構圖超簡單,使用Windows Command 「tree」指令來執行
👉 使用「dsquery Command」來查詢及匯出 AD使用者帳號
▼參考來源:
👉
iThome
👉
MS docs
👉
blog.miniasp.com
👉
blog.miniasp.com-2
沒有留言:
張貼留言