你還在使用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\�te:~0,4%�te:~5,2%�te:~8,2%.log
[範例二] ~ 同步S槽和T槽下的Test資料匣,並輸出以日期和時間命名的log檔
robocopy S:\Test T:\Test /MIR /COPYALL /NDL /NFL /MT:100 /LOG+:C:\robocopy_log\�te:~0,4%�te:~5,2%�te:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.log
若上方範例亂碼,請看下圖:
以下是比較常用的robocopy參數說明
/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\�te:~0,4%�te:~5,2%�te:~8,2%.log
net use S: /delete
net use T: /delete
@echo "請確認log file是否有錯誤"
pause
實際測試範例參考:
>>歡迎您按Line分享喔!<<
延伸閱讀 >
【Windows Command 教學】"echo" 指令如何使用?
Reference :
> iThome
> MS docs
> blog.miniasp.com
> blog.miniasp.com-2
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\�te:~0,4%�te:~5,2%�te:~8,2%.log
[範例二] ~ 同步S槽和T槽下的Test資料匣,並輸出以日期和時間命名的log檔
robocopy S:\Test T:\Test /MIR /COPYALL /NDL /NFL /MT:100 /LOG+:C:\robocopy_log\�te:~0,4%�te:~5,2%�te:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.log
若上方範例亂碼,請看下圖:
以下是比較常用的robocopy參數說明
/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\�te:~0,4%�te:~5,2%�te:~8,2%.log
net use S: /delete
net use T: /delete
@echo "請確認log file是否有錯誤"
pause
實際測試範例參考:
>>歡迎您按Line分享喔!<<
延伸閱讀 >
【Windows Command 教學】"echo" 指令如何使用?
Reference :
> iThome
> MS docs
> blog.miniasp.com
> blog.miniasp.com-2