[Win] 使用 Robocopy 實現自動備份:產生日期資料夾與 Log 驗證實戰
📝 前言:追求備份的自動化效率
隨著工作累積,檔案量越來越龐大,加上辦公室環境偶爾會跳電,備份需求迫在眉睫。剛好在 IT 邦幫忙看到網友提問如何利用腳本備份「當天產出的檔案」,觸發了我研究自動化備份的動機。過去我常使用 FastCopy 或 TeraCopy,雖然好用,但仍需人工介入設定。這篇文章將分享我整合 Robocopy 所開發的自動化備份腳本。
Robocopy 指令介紹:地表最強複製工具
一般我們複製檔案習慣使用「檔案總管」選取後 Ctrl+C / Ctrl+V,但在處理超大檔案或海量小檔案時,效能極差。Windows 7(含 Server 2008 R2)以後的系統內建了 Robocopy (Robust File Copy),提供更強大、穩定的檔案搬運能力。
Vista 以後的版本不需額外工具;舊版如 XP/2003 則可下載 Windows Server 2003 Resource Kit 取得。與傳統的 copy 或 xcopy 不同,Robocopy 具備以下優勢:
- 深度資料夾支援: 支援多層級路徑,不因路徑過長而崩潰。
- 同步功能: 能達成來源與目的地的「鏡像同步」。
- 差異化備份: 僅複製異動檔案,大幅縮短備份時間。
常用參數說明表
| 參數 | 功能說明 |
|---|---|
| /S | 複製子目錄,但不包含空目錄。 |
| /E | 複製子目錄,包含空目錄。 |
| /ZB | 使用可重新啟動模式;若拒絕存取則改用備份模式。 |
| /COPYALL | 複製所有檔案資訊 (包含資料、屬性、時間戳記、安全性資訊等)。 |
| /MIR | 鏡像樹狀目錄 (相當於 /E 加 /PURGE,會刪除來源端已不存在的檔案)。 |
| /MT:n | 多執行緒複製 (n 預設為 8),可加快大量小檔案搬運速度。 |
實戰腳本:NAS 自動備份腳本詳解
以下是我開發的腳本片段,核心逻辑是:**建立以當天日期命名的資料夾** 並將檔案備份進去,同時產生日誌檔以便查驗結果。
NAS_Backup_v2.5.bat
@Echo OFF
Title [ NAS Backup 備份程式]
color F0
rem ----- 建立網路磁碟機連線 -----
net use \\192.168.0.10 /user:admin aaaaaaaaaaaa
rem ----- 開始備份所有檔案並產生日期標籤的 Log -----
echo 開始備份資訊室資料 >> D:\Log\%date:~0,4%%date:~5,2%%date:~8,2%NasBackUp.log
TIME /T >> D:\Log\%date:~0,4%%date:~5,2%%date:~8,2%NasBackUp.log
robocopy E:\資訊室\ \\192.168.0.100\nas\%date:~0,4%%date:~5,2%%date:~8,2%\資訊室\ /mir /MT:100 /R:3 /W:1 /xf *.db >> D:\Log\%date:~0,4%%date:~5,2%%date:~8,2%NasBackUp.log
TIME /T >> D:\Log\%date:~0,4%%date:~5,2%%date:~8,2%NasBackUp.log
echo 資訊室資料結束備份 >> D:\Log\%date:~0,4%%date:~5,2%%date:~8,2%NasBackUp.log
rem ----- 斷開網路連線 -----
net use * /del /y
腳本設計心得:
- 日期資料夾: 使用
%date:~0,4%等變數,確保備份路徑自動根據系統日期分類。 - Log 記錄: 雖然 Robocopy 有
/log參數,但我偏好使用轉向符號>>,這樣能將腳本的其他狀態訊息一併完整保存。 - 多路徑並行: 針對不同線路或主機,我會寫多段 robocopy 語法分別備份至不同資料夾,以最大化頻寬效率。
參考資源與文章
- IT 邦幫忙網友提問:如何用 copy 或 script 指令備份當天檔案
- toithome 大大:使用 Windows Robocopy 每日同步並產 Log 驗證
- 其他專業範例:Robocopy 指令範例參考 (MIR 小心使用)
留言
張貼留言