492 字
2 分鐘
瀏覽次數
Robocopy 教學:強大又穩定的備份神器
2025-07-25
2026-04-10

結論#

  • 用一條 Robocopy 指令即可完成「鏡像備份+排除+Log+加速」,適合日常自動化備份。

適合用在哪裡#

  • 定期備份(每日 / CI 前備份)
  • 大量檔案同步(專案資料夾)
  • 需要排除 node_modules / bin 等暫存資料
  • 需要保留權限與時間戳的情境

流程步驟#

1. 建立基礎備份指令#

  • 使用 robocopy 指定來源與目的地,並加上 mirror 模式同步整體資料
  • /mir 會讓目的地完全等同來源(包含刪除),適合「真正備份」而非單純 copy
  • 指令如下:
Terminal window
robocopy "來源資料夾" "目的地資料夾" /mir

2. 加入排除與效能優化#

  • 排除不需要的檔案(如 .bak、.scc)與資料夾(bin、obj、node_modules)
  • /MT:100 開啟多執行緒加速,大量檔案時差很多
  • /xj 避免 Junction 無限遞迴(常見在 node_modules)
Terminal window
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,方便排錯或稽核
Terminal window
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
Terminal window
:: 建立 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/
作者
JoyceOwO
發佈於
2025-07-25
許可協議
CC BY-NC-SA 4.0