你還在使用 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



 
沒有留言:
張貼留言