492 字
2 分鐘
Robocopy 教學:強大又穩定的備份神器
結論
- 用一條 Robocopy 指令即可完成「鏡像備份+排除+Log+加速」,適合日常自動化備份。
適合用在哪裡
- 定期備份(每日 / CI 前備份)
- 大量檔案同步(專案資料夾)
- 需要排除 node_modules / bin 等暫存資料
- 需要保留權限與時間戳的情境
流程步驟
1. 建立基礎備份指令
- 使用 robocopy 指定來源與目的地,並加上 mirror 模式同步整體資料
/mir會讓目的地完全等同來源(包含刪除),適合「真正備份」而非單純 copy- 指令如下:
robocopy "來源資料夾" "目的地資料夾" /mir2. 加入排除與效能優化
- 排除不需要的檔案(如 .bak、.scc)與資料夾(bin、obj、node_modules)
/MT:100開啟多執行緒加速,大量檔案時差很多/xj避免 Junction 無限遞迴(常見在 node_modules)
robocopy "來源資料夾" "目的地資料夾" /mir /xj /MT:100 /xf *.scc *.bak ^ /xd "packages" "bin" "obj" "node_modules" ".vs" "TempFile" "Data" "history"3. 控制同步範圍+輸出 Log
/maxage:7限制只同步最近 7 天變更,減少不必要 I/O- 將結果輸出到 log,方便排錯或稽核
robocopy "來源資料夾" "目的地資料夾" /mir /xj /MT:100 /xf *.scc *.bak ^ /xd "packages" "bin" "obj" "node_modules" ".vs" "TempFile" "Data" "history" ^ /maxage:7 > .\\Log\\%dd%.log補充
/mir會刪除目的地多餘檔案,誤用會直接「幫你清空」/MT雖然快,但過高可能吃滿 CPU 或 IO,建議 16~64 起測%DATE%格式會受系統語系影響,跨機器可能要調整
指令 / 範例整理
Click to expend
:: 建立 Log 資料夾if not exist ".\\Log" mkdir ".\\Log"
:: 產生日期(YYYYMMDD)set dd=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
:: 完整備份指令robocopy "來源資料夾" "目的地資料夾" /mir /xj /MT:100 /xf *.scc *.bak ^ /xd "packages" "bin" "obj" "node_modules" ".vs" "TempFile" "Data" "history" ^ /maxage:7 > .\\Log\\%dd%.log收尾
- Robocopy 不難,難的是「參數組合」,這套基本夠打 90% 備份場景。
- 建議先在測試資料夾跑一次,確認
/mir行為再上正式環境。
Robocopy 教學:強大又穩定的備份神器
https://joyceowo.github.io/posts/23ba78ea09fa81e7a124eac97b80afce/