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: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 為什麼不一定適合使用 /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 時,建議先使用 /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 5 | Access 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檢查。
九、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 /MIR 會刪除檔案嗎?
/COPYALL 和 /COPY:DAT 有什麼差異?
Robocopy 的 /XJ 有什麼作用?
Robocopy Exit Code 1 是不是代表備份失敗?
Robocopy 可以取代 Windows 完整系統備份嗎?
Robocopy 備份需要建立 LOG 嗎?
Robocopy 要怎麼設定成自動排程執行?
本文重點整理
- Robocopy 備份適合 Windows 檔案與資料夾備份
- /E 適合完整複製子資料夾
- /COPY:DAT 適合許多一般跨設備備份情境
- /COPYALL 使用前必須確認目的端是否支援 NTFS 安全性資訊
- /MIR 具備鏡像刪除行為,使用前務必用 /L 測試
- /XJ 可以降低 Junction 造成非預期複製的風險
- /R、/W 務必手動指定數值,避免使用預設值卡住排程
- /LOG+ 適合建立長期備份紀錄,搭配Exit Code判斷自動偵測失敗
- 搭配 schtasks 或工作排程器,才能真正做到自動化備份
- 重要資料除了備份之外,也必須定期進行還原測試
本文為 Robocopy 備份的通用操作教學,實際指令、路徑與排程設定請依你的環境調整;正式環境操作前務必先用 /L 測試 /MIR,並定期驗證備份是否可以正常還原。
