2011年4月13日 星期三

複製檔案的好工具:robocopy

最近把資料庫異地備份的工作接回來自己做, 才發現之前同事備份資料時使用的USB 2.0隨身碟效能確實不太好, 每周要備份的資料多達60GB, 至少要兩個小時才能備完。更糟的是, 隨身碟好像有點問題, 每每備份到一半就卡住不動, 又看不出來是什麼狀況。常常等很久之後, 忍不住了就拔線, 都會造成檔案不一致的現象, 還要再下chkdsk /F指令來處理。
稍做觀察後, 我發現那顆隨身碟(Transcend)有兩個問題:
1. USB線頭有接觸不良的情形, 所以複製檔案時不能去碰線, 否則就會整顆磁碟由系統中消失。
2. 並行處理能力不好, 如果有多個大檔案同時寫入時, 就很容易出現卡住的情形。

而我們之前使用的方法(在檔案總管內拖拉), 就會造成同時多個大檔案寫入。因此, 我一開始寫批次檔, 利用xcopy指令一個檔案一個檔案的複製, 果然就不再出現卡住的現象。但是xcopy指令必須一個檔案一個檔案的寫, 而且無法自行處理目錄, 批次檔寫起來有點辛苦! 在嘗試時, 發現robocopy這個指令, 不但有續傳的功能, 而且會自行處理目錄問題, 更好的是會顯示複製的進度。大概用法如下:
robocopy g:\xxx h:\yyy /E

這樣一來, 就會把g:碟中xxx目錄內所有檔案及子目錄, 通通複製到h:碟中的yyy目錄下。robocopy在必要的時候會自行新增目錄, 不用我們處理。
最後, 推薦一下USB 3.0的隨身碟, 因為備份時間太久了, 所以我改用segate GoFlex Pro的隨身碟; 實測結果:
USB 2.0 -> 25MB/s
USB 3.0 -> 100MB/s
所以備份時間由原來的2小時, 縮短為20分鐘。
張貼留言