---
# System prepended metadata

title: Robocopy指令，使用 PowerShell 每天自動備份的好工具
tags: [系統學習]

---

日常維護會做一些備份動作，寫寫指令放在下班時間讓他自己跑，也省得造成大家困擾

表格是windows常見的備份語法，我比較常用的是robocopy，雖然詳細的語法記不住，但功能最多，花一點時間查查倒是還行。



| 指令     | 功能                     | 優點                        | 缺點 | 適用場景 |
| -------- | ------------------------ | --------------------------- | ---- | -------- |
| copy     | 基本的檔案複製           | 簡單易用，適用於單一檔案 |   只能處理單一檔案、 無法複製目錄、無法保留檔案屬性   | 複製少量的單一檔案        |
| xcopy    | 進階的檔案與目錄複製     | 可複製目錄與子目錄、可選擇是否複製空目錄、可複製隱藏與系統檔案| 不可靠，可能會在大檔案或長路徑時出錯、無內建重試機制     |  適合簡單的目錄備份        |
| robocopy | 強大的檔案同步與備份工具 |   支援增量複製（只複製變更檔案）、可保留 NTFS 權限、時間戳記、屬性、 內建重試與錯誤恢復機制、支援多執行緒（提升速度）|  語法較為複雜、需要 Windows Vista 以上版本    | 大量檔案備份、網路/伺服器間的檔案同步、需要穩定、可靠的資料傳輸         |


詳細的語法可以在這裡查得到
https://learn.microsoft.com/zh-tw/windows-server/administration/windows-commands/robocopy


對照字典，依照目前的需求弄出來的指令如下：

`robocopy 來源資料夾 目標資料夾 /e /copy:dat /xo /MT:16 /LOG:C:\robolog.txt`

> /e：複製所有子目錄（包括 空目錄）。
> /copy:dat：只複製 資料 (D)、屬性 (A)、時間戳記 (T)，不包含 NTFS 權限、安全資訊 (ACL) 或擁有權。
> /xo：不會覆蓋目標中已存在且較新的檔案，只會複製較新的或不存在的檔案。
> /MT:16：使用 16 個執行緒 



`robocopy 來源資料夾 目標資料夾 /s /TEE /LOG:C:\robolog.txt`

> /s：複製 所有非空的子目錄（不會複製空資料夾）。
> /TEE：讓 ROBOCOPY 同時在畫面與日誌檔顯示輸出。


寫好.bat之後就能丟進去每日排程裡面讓他自己執行囉


