Robocopy 備份完整教學:指令、NAS、LOG 與 /MIR 參數解析

Robocopy 備份是 Windows 系統中非常實用的檔案複製與資料備份方式。Robocopy(Robust File Copy)是 Windows 內建的命令列工具,可以用於本機資料備份、外接硬碟備份、伺服器資料同步以及 NAS 備份。相較於單純使用 Windows 檔案總管拖曳檔案,Robocopy 可以透過參數控制資料夾遞迴、檔案同步、重試次數、等待時間、權限複製與 LOG 記錄,並搭配 Windows 工作排程器建立真正的自動化備份工作。本文將從 Robocopy 備份的基本語法開始,逐步介紹 /E、/MIR、/COPY:DAT、/COPYALL、/XJ、/LOG、/TEE 等常用參數,並提供 Windows 本機、外接硬碟、NAS 備份與排程自動化的實際案例。

一、Robocopy 備份基本語法

Robocopy 的基本語法可以理解為「來源 → 目的地 → 參數」。最基本的形式如下:

robocopy <來源資料夾> <目的資料夾> [參數]

例如,要將 D 槽的 Data 資料夾備份到 E 槽的 Backup:

robocopy D:\Data E:\Backup /E

執行後,Robocopy 會掃描來源資料夾,建立目的端需要的資料夾結構,並複製符合條件的檔案。再次執行相同指令時,Robocopy 會比較來源與目的端的檔案狀態,通常只處理需要更新的資料,因此非常適合定期執行的備份工作。

二、Robocopy 常用參數解析

Robocopy 真正強大的地方在於大量參數。不同參數會直接影響備份結果,因此建立正式的 Robocopy 備份工作前,應先了解各參數的用途。

Robocopy 常用參數一覽
參數用途注意事項
/E複製所有子資料夾,包含空資料夾適合完整資料夾備份
/MIR建立來源與目的端鏡像(等同 /E + /PURGE)可能刪除目的端多餘檔案
/COPY:DAT複製資料、屬性與時間跨設備備份常用
/COPYALL複製完整檔案資訊(等同 /COPY:DATSOU)包含 NTFS ACL 等安全性資訊
/DCOPY:DAT複製資料夾的資料、屬性與時間適合保留資料夾時間資訊
/XJ排除 Junction可降低非預期目錄遞迴風險
/R:n設定失敗後重試次數預設高達100萬次,務必手動指定
/W:n設定重試等待秒數與 /R 搭配使用,預設30秒
/LOG輸出備份 LOG(覆蓋)適合正式備份
/LOG+追加 LOG不覆蓋原有紀錄
/TEE畫面與 LOG 同時輸出適合測試與排錯
⚠️ 重要提醒:/R(重試次數)如果沒有指定,Robocopy 預設會重試高達 100萬次,/W(等待秒數)預設也有30秒。如果來源或目的端出現無法存取的情況,指令可能會卡在原地等待非常久的時間,尤其是排程自動化執行時特別危險。建議一定要手動指定合理的數值,例如 /R:2 /W:5。

/E:完整複製子資料夾

/E 會複製所有子資料夾,包括空資料夾。如果目的是建立完整資料夾結構,通常會使用 /E。

robocopy D:\Data E:\Backup /E

/COPY:DAT:跨設備備份常用設定

/COPY:DAT 代表複製 Data、Attributes、Time,也就是檔案資料、屬性與時間資訊。當目的端不是另一個具有完整 NTFS 安全性結構的 Windows NTFS 磁碟時,這種方式通常比複製完整 NTFS 安全性資訊更容易管理。

robocopy D:\Data E:\Backup /E /COPY:DAT

/COPYALL:完整複製檔案資訊

/COPYALL 等同於複製 DATSOU 等完整檔案資訊,其中包含資料、屬性、時間、NTFS ACL、Owner 與 Audit 等資訊。

如果目的端是 Windows NTFS 環境,而且需要保留原有的安全性資訊,可以考慮使用 /COPYALL。但如果目的端是 NAS 或其他檔案系統,必須先確認是否支援這些 Windows 安全性資訊,否則可能產生權限錯誤。

/XJ:排除 Junction

Windows 系統中可能存在 Junction 或其他重新導向的目錄結構。使用 /XJ 可以排除 Junction,降低複製過程進入非預期目錄結構的風險。

robocopy D:\Data E:\Backup /E /XJ

三、Robocopy 本機與外接硬碟備份

最常見的 Robocopy 備份情境,就是將電腦內部資料備份到第二顆硬碟或 USB 外接硬碟。

案例一:本機資料備份

robocopy D:\Data E:\Backup /E /COPY:DAT /DCOPY:DAT /R:2 /W:5 /XJ

這條指令可以解讀為:

  • /E:複製所有子資料夾與空資料夾
  • /COPY:DAT:複製資料、屬性與時間
  • /DCOPY:DAT:保留資料夾相關資訊
  • /R:2:失敗時最多重試 2 次
  • /W:5:每次重試等待 5 秒
  • /XJ:排除 Junction

這種設定適合日常資料備份,尤其是文件、照片、工程資料與工作檔案等。

案例二:外接硬碟備份

robocopy C:\Users\Public E:\Backup\Public /E /COPY:DAT /DCOPY:DAT /R:2 /W:5 /XJ

如果 E 槽是 USB 外接硬碟,建議先確認磁碟機代號是否固定。若磁碟機代號經常改變,可以改用磁碟區名稱或其他更穩定的管理方式,避免排程執行時備份到錯誤磁碟。

四、Robocopy NAS 備份實戰

Robocopy 也非常適合將 Windows 電腦資料備份到 NAS。Windows 通常透過 SMB 連接 NAS 共用資料夾,再使用 Robocopy 執行檔案複製。

案例三:使用網路磁碟機備份 NAS

net use T: \\192.168.1.10\backup /user:admin password

robocopy D:\Data T:\Backup /E /COPY:DAT /DCOPY:DAT /R:2 /W:5 /XJ

第一行使用 net use 建立 SMB 網路磁碟機,將 NAS 的共用資料夾掛載成 T 槽。第二行再利用 Robocopy 將 D:\Data 備份至 NAS。

⚠️ 安全提醒:正式環境不建議直接把 NAS 密碼明文寫在批次檔中。若使用排程備份,應考慮 Windows 認證管理(Credential Manager)、受限權限帳號或其他安全的認證方式。

NAS 為什麼不一定適合使用 /COPYALL?

NAS 的檔案系統與 Windows NTFS 並不一定完全相同。當 Robocopy 使用 /COPYALL 時,除了檔案資料之外,也可能嘗試寫入 Windows NTFS ACL、Owner 與 Audit 等資訊。

如果 NAS 或 SMB 服務端無法完整對應這些資訊,就可能出現 Access Denied 或其他權限錯誤。因此 NAS 備份通常應依照實際環境選擇適合的複製模式,而不是看到 /COPYALL 就直接使用。

如果你需要 Linux 環境的檔案同步與網站搬移,也可以參考:Linux 網站搬家完整教學|SCP / RSYNC 傳輸與備份實戰(2026)

五、Robocopy /MIR 鏡像同步與刪除風險

/MIR 是 Robocopy 非常強大的參數,可以建立來源與目的端的鏡像結構。它相當於使用 /E 搭配目的端多餘檔案與資料夾的刪除行為(/PURGE)。

robocopy D:\Data E:\Backup /MIR /COPY:DAT /DCOPY:DAT /R:2 /W:5 /XJ

例如來源端有:

D:\Data
 ├── A.txt
 ├── B.txt
 └── C.txt

如果目的端原本還有一個來源不存在的 old.txt,執行 /MIR 後,Robocopy 可能會將目的端的 old.txt 刪除,使兩邊維持鏡像狀態。

⚠️ /MIR 重要警告:/MIR 不只是「備份」,而是「鏡像同步」。如果來源端檔案被刪除,目的端對應檔案也可能被刪除。因此不要在沒有確認來源與目的路徑的情況下直接使用 /MIR。

正式使用 /MIR 前先測試

第一次使用 /MIR 時,建議先使用 /L 進行模擬,不實際複製或刪除資料。

robocopy D:\Data E:\Backup /MIR /L

確認 LOG 或畫面中的檔案清單沒有問題後,再移除 /L 執行正式同步。這是使用 /MIR 時非常重要的安全檢查步驟。

六、Robocopy LOG 排錯與錯誤分析

Robocopy 備份如果要用於正式環境,建議加入 LOG。LOG 可以協助管理員確認哪些檔案成功、哪些檔案被跳過,以及是否出現權限、網路或檔案存取錯誤。

案例四:建立完整備份 LOG

mkdir C:\robocopy_log

robocopy D:\Data E:\Backup /E /COPY:DAT /DCOPY:DAT /R:2 /W:5 /TEE /LOG+:C:\robocopy_log\backup.log

這條指令會將 Robocopy 執行過程同時顯示在畫面上,並追加寫入 backup.log。

  • /LOG+:追加 LOG,不覆蓋原本紀錄
  • /TEE:畫面與 LOG 同時輸出
  • /R:2:錯誤時最多重試 2 次
  • /W:5:每次重試等待 5 秒

常見 LOG 關鍵字

Robocopy LOG常見訊息與可能原因
訊息可能原因
ERROR 5Access Denied,可能與權限或認證有關
RETRY檔案複製失敗,Robocopy 正在重新嘗試
SKIPPED檔案符合條件而被跳過
Access Denied目前帳號無法存取來源或目的資料

七、Robocopy Exit Code 判讀

很多人看到 Robocopy 執行完成後不是顯示 0,就認為備份失敗,其實 Robocopy 使用 Exit Code 表示不同的執行結果,因此不能單純把「非 0」視為錯誤。

Robocopy Exit Code對照表
Exit Code一般意義
0沒有需要複製的檔案,來源與目的端已相同
1有檔案成功複製
2目的端存在額外檔案或資料夾
3同時存在額外項目與成功複製
8 以上通常表示有一個以上複製失敗,應進一步檢查 LOG
16嚴重錯誤,Robocopy 未複製任何檔案(通常是路徑或參數錯誤)

因此建立 Windows 工作排程時,不建議只用「Exit Code 不等於 0」判定備份失敗,而應依照 Robocopy 的 Exit Code 定義建立適合的判斷條件,一般會以 Exit Code ≥ 8 作為失敗的判斷門檻。

八、Robocopy 排程自動化實戰

Robocopy 本身只負責執行一次複製,如果要達成「自動化備份」,還需要搭配 Windows 工作排程器(Task Scheduler),並在批次檔中加入 Exit Code 判斷邏輯,才能真正做到定期執行、自動偵測失敗。

方法一:用 schtasks 指令建立排程

可以直接用指令建立一個每天凌晨2點自動執行的備份工作,不需要開Task Scheduler圖形介面:

schtasks /create /tn "DailyRobocopyBackup" /tr "robocopy D:\Data E:\Backup /MIR /COPY:DAT /R:2 /W:5 /TEE /LOG+:C:\robocopy_log\backup.log" /sc daily /st 02:00

指令中 /tn 是排程工作名稱、/tr 是實際要執行的指令、/sc daily /st 02:00 代表每天凌晨2點執行一次。建立後可以在「工作排程器」圖形介面中找到這個工作,進一步調整執行帳號與其他進階設定。

方法二:搭配批次檔自動偵測失敗

建議把Robocopy指令包進一個 .bat 批次檔,並在執行後檢查Exit Code,只在真正失敗時才記錄或通知,而不是每次執行都當作異常:

@echo off
robocopy D:\Data E:\Backup /MIR /COPY:DAT /R:2 /W:5 /TEE /LOG+:C:\robocopy_log\backup.log

if %ERRORLEVEL% GEQ 8 (
    echo Backup FAILED, please check backup.log >> C:\robocopy_log\backup_status.log
) else (
    echo Backup completed successfully >> C:\robocopy_log\backup_status.log
)

把這個批次檔的路徑設定成排程要執行的工作(/tr參數改指向.bat檔案),就能同時做到定期備份與自動失敗偵測,不需要每天手動打開LOG檢查。

💡 工程師提醒:排程搭配 /MIR 時要特別小心——如果來源磁碟機因故未掛載或路徑錯誤,Robocopy 可能會誤判「來源是空的」,進而把目的端資料大量刪除以「維持鏡像」。正式環境建議在批次檔開頭加入來源路徑是否存在的檢查,確認無誤後才執行 /MIR。

九、Robocopy 備份實務建議

如果 Robocopy 是要真正使用在企業或工作環境,建議不要只建立一條複製指令就結束。完整的 Robocopy 備份應該同時考慮資料、權限、LOG、排程與還原測試。

  • 先確認來源與目的端路徑
  • 正式使用 /MIR 前先使用 /L 測試
  • NAS 備份先確認 SMB 權限
  • 跨設備備份不要盲目使用 /COPYALL
  • 正式環境加入 /LOG+ 保留執行紀錄
  • /R 與 /W 務必手動指定,不要用預設值
  • 排程執行前,批次檔先檢查來源路徑是否存在,避免誤刪
  • 重要資料應建立多份備份
  • 定期測試備份資料是否真的可以還原

Robocopy 備份推薦基本範例:

robocopy D:\Data E:\Backup /E /COPY:DAT /DCOPY:DAT /R:2 /W:5 /XJ /TEE /LOG+:C:\robocopy_log\backup.log

這個範例適合做為一般 Windows 資料備份的起點。如果是 NAS、系統映像、權限保留、鏡像同步或排程自動化等特殊情境,則應依照實際需求調整參數,並搭配本文第八節的排程與Exit Code判斷邏輯。

十、常見問題 FAQ

Robocopy 備份適合拿來備份 NAS 嗎?
可以。Robocopy 可以透過 SMB 存取 NAS 共用資料夾,適合進行 Windows 電腦到 NAS 的檔案備份。不過應依照 NAS 的檔案系統與權限支援情況選擇適合的 COPY 參數。
Robocopy /MIR 會刪除檔案嗎?
會。/MIR 是鏡像同步模式,目的端可能刪除來源端不存在的檔案與資料夾。因此第一次使用前建議搭配 /L 模擬執行,確認結果後再正式執行。
/COPYALL 和 /COPY:DAT 有什麼差異?
/COPY:DAT 主要複製資料、屬性與時間;/COPYALL 則會進一步複製 NTFS ACL、Owner、Audit 等資訊。跨設備或 NAS 備份時,應先確認目的端是否支援這些 Windows 安全性資訊。
Robocopy 的 /XJ 有什麼作用?
/XJ 用來排除 Junction。Windows 某些資料夾結構可能包含 Junction,排除後可以降低複製時進入非預期目錄結構的風險。
Robocopy Exit Code 1 是不是代表備份失敗?
不是。Robocopy 的 Exit Code 1 通常代表有檔案成功複製。Exit Code 必須依照 Robocopy 的定義判讀,不能簡單把所有非 0 的結果都視為失敗,一般以 Exit Code 大於等於 8 作為失敗的判斷門檻。
Robocopy 可以取代 Windows 完整系統備份嗎?
不建議。Robocopy 主要是檔案與資料夾複製工具,適合資料備份與同步,但不能直接等同於完整系統映像或完整災難復原方案。
Robocopy 備份需要建立 LOG 嗎?
如果是正式環境或排程備份,強烈建議建立 LOG。LOG 可以協助確認備份結果、找出 Access Denied、RETRY 等問題,也方便日後追蹤與稽核。
Robocopy 要怎麼設定成自動排程執行?
可以用 Windows 工作排程器(Task Scheduler)或 schtasks 指令,設定每天固定時間自動執行 Robocopy 備份指令,並搭配 Exit Code 判斷邏輯,在批次檔中自動偵測備份是否失敗、視需要發送通知。

本文重點整理

  • Robocopy 備份適合 Windows 檔案與資料夾備份
  • /E 適合完整複製子資料夾
  • /COPY:DAT 適合許多一般跨設備備份情境
  • /COPYALL 使用前必須確認目的端是否支援 NTFS 安全性資訊
  • /MIR 具備鏡像刪除行為,使用前務必用 /L 測試
  • /XJ 可以降低 Junction 造成非預期複製的風險
  • /R、/W 務必手動指定數值,避免使用預設值卡住排程
  • /LOG+ 適合建立長期備份紀錄,搭配Exit Code判斷自動偵測失敗
  • 搭配 schtasks 或工作排程器,才能真正做到自動化備份
  • 重要資料除了備份之外,也必須定期進行還原測試

本文為 Robocopy 備份的通用操作教學,實際指令、路徑與排程設定請依你的環境調整;正式環境操作前務必先用 /L 測試 /MIR,並定期驗證備份是否可以正常還原。