超強檔案複製指令robocopy

| | Comments (0) | TrackBacks (0)


在Windows下,大家也許會習慣用檔案總管拖拉方式或複製、貼上方式進行檔案的拷貝,如果進階一點的,也許會下copy或Xcopy指令的方式來作檔案的拷貝。如果在您的資料夾下,有比較特殊的檔名或太多層的資料夾深度,那這些常見的拷貝也許就會失敗,尤其一次要拷貝很多檔案時,更容易會因單一檔案失敗而造成需重頭來過。

Microsoft在Windows Server 2003 時,出了一個ResourceKit的Tools,裡面大約有126個命令。
在開始使用前,記得先到Microsoft官網下載ResourceKit(link here),下載完成後,直按安裝下載回來的檔案,
安裝程式會自動將ResourceKit的資料夾加入Path環境變數,所以可以馬上使用。
(這個工具包,同時適用於Windows 2000 及 Windows XP 及後面Win32作業系統)


下面我們看看Robocopy這個超強的檔案複製指令。

Robocopy除了是個資料夾/檔案的複製指令外,基本上已經作到了「同步」的功能及滿足「差異化備份」的需求。
舉個例,在 A 資料夾下,有 A1.txt、A2.txt、A3.txt 等三個檔案,透過 robocopy 複製一份到 B 資料夾。
當A1.txt有修改時,只要再次透過 robocopy 即可同步到 B ,並且不用重新複製 A2.txt 及 A3.txt 。
如果 A2.txt 刪除了,也可以透過 robocopy 去作同步的動作,不需自己再手動去刪除 B 資料夾下的 A2.txt。

這樣的同步有什麼好處?在少量檔案時,可能很難發現他的強大,但是如果檔案數是幾千、幾萬個時,且需要固定時間的備份到另一個地方(如備份硬碟),這時候robocopy的「差異化備份」就可以派上用場,對整體備份而言,提昇不少效能。

如果需求就是差異化備份,那常用的參數為:
robocopy  來源  目的  /e  /xo  /purge
/e :代表複製子資料夾,含空的資料夾
/xo :排除較舊的檔案,意思是來源端沒有比目的端新時,就不複製(差異化備份,很重要的參數)
/purge :刪除來源中,不再存在的資料夾或檔案(這個也是差異化備份,很重要的參數)

下圖為執行完畢後的完整Report。



後面列出完整的參數說明: (也可以用「robocopy /?」 取得說明)
------------------------------------------------------------------------------
              Usage :: ROBOCOPY source destination [file [file]...] [options]
                    source 來源:: 原始目錄(驅動器:\路徑或\\伺服器\共用\路徑)。
                destination目錄:: 目標目錄(驅動器:\路徑或\\伺服器\共用\路徑)。
                 file 文件:: 要複製的檔(名稱/萬用字元: 默認為 "*.*")。
------------------------------------------------------------------------------
複製選項:
------------------------------------------------------------------------------
                 /S :: 複製子目錄,但不複製空的子目錄。
                 /E :: 複製子目錄,包括空的子目錄。
             /LEV:n :: 僅複製原始目錄樹的前 n 層。
                 /Z :: 在可重新開機模式下複製檔。
                 /B :: 在備份模式下複製檔。
                /ZB :: 使用可重新開機模式;如果拒絕訪問,請使用備份模式。
            /EFSRAW :: 在 EFS RAW 模式下複製所有加密的檔。
      /COPY:複製標記:: 要複製的檔內容(預設為 /COPY:DAT)。
                       (複製標記: D=資料,A=屬性,T=時間戳記)。
                       (S=安全=NTFS ACL,O=所有者資訊,U=審核資訊)。
           /DCOPY:T :: 複製目錄時間戳記。
               /SEC :: 複製具有安全性的檔(等同於 /COPY:DATS)。
           /COPYALL :: 複製所有檔資訊(等同於 /COPY:DATSOU)。
            /NOCOPY :: 不複製任何檔資訊(與 /PURGE 一起使用生效)。
            /SECFIX :: 修復所有檔的檔安全性,即使是跳過的文件。
            /TIMFIX :: 修復所有檔的檔時間,即使是跳過的檔。
             /PURGE :: 刪除來源中不再存在的目的檔案/目錄。
               /MIR :: 鏡像目錄樹(等同於 /E 和 /PURGE)。
               /MOV :: 移動檔(複製後從源中刪除)。
              /MOVE :: 移動檔和目錄(複製後從源中刪除)。
     /A+:[RASHCNET] :: 將給定的屬性添加到複製檔。
     /A-:[RASHCNET] :: 從複製檔中刪除給定的屬性。
            /CREATE :: 僅創建目錄樹和長度為零的檔。
               /FAT :: 僅使用 8.3 FAT 檔案名創建目的檔案。
               /256 :: 關閉超長路徑(> 256 字元)支援。
             /MON:n :: 監視源;發現多於 n 個更改時再次運行。
             /MOT:m :: 監視源;如果更改,在 m 分鐘時間內再次運行。
      /RH:hhmm-hhmm :: 運行小時數 - 可以啟動新副本的時間。
                /PF :: 以每個檔(而不是每個步驟)為基礎檢查運行小時數。
             /IPG:n :: 套裝程式間的間距(ms),以釋放低速線路上的頻寬。
------------------------------------------------------------------------------
檔選擇選項:
------------------------------------------------------------------------------
                 /A :: 僅複製具有存檔屬性集的檔。
                 /M :: 僅複製具有存檔屬性的檔並重置存檔屬性。
    /IA:[RASHCNETO] :: 僅包含具有任意給定屬性集的檔。
    /XA:[RASHCNETO] :: 排除具有任意給定屬性集的檔。
  /XF 文件[文件]... :: 排除與給定名稱/路徑/萬用字元匹配的檔。
  /XD 目錄[目錄]... :: 排除與給定名稱/路徑匹配的目錄。
                /XC :: 排除已更改的文件。
                /XN :: 排除較新的檔。
                /XO :: 排除較舊的文件。
                /XX :: 排除多餘的檔和目錄。
                /XL :: 排除孤立的檔和目錄。
                /IS :: 包含相同檔。
                /IT :: 包含已調整的檔。
             /MAX:n :: 最大的檔大小 - 排除大於 n 位元組的檔。
             /MIN:n :: 最小的檔大小 - 排除小於 n 位元組的檔。
          /MAXAGE:n :: 最長的檔存在時間 - 排除早於 n 天/日期的檔。
          /MINAGE:n :: 最短的檔存在時間 - 排除晚於 n 天/日期的檔。
          /MAXLAD:n :: 最大的最後訪問日期 - 排除自 n 以來未使用的檔。
          /MINLAD:n :: 最小的最後訪問日期 - 排除自 n 以來使用的檔。
                       (If n < 1900 then n = n days, else n = YYYYMMDD date)。
                /XJ :: 排除接合點。(預設情況下通常包括)。
               /FFT :: 假設 FAT 檔時間(2 秒細微性)。
               /DST :: 彌補 1 小時的 DST 時間差。
               /XJD :: 排除目錄的接合點。
               /XJF :: 排除文件的接合點。
------------------------------------------------------------------------------
重試選項:
------------------------------------------------------------------------------
               /R:n :: 失敗副本的重試次數: 默認為 1 百萬。
               /W:n :: 兩次重試間的等待時間: 默認為 30 秒。
               /REG :: 將註冊表中的 /R:n 和 /W:n 保存為默認設置。
               /TBD :: 等待定義共用名稱稱(重試錯誤 67)。
------------------------------------------------------------------------------
日誌記錄選項:
------------------------------------------------------------------------------
                 /L :: 僅列出 - 不複製、添加時間戳記或刪除任何檔。
                 /X :: 報告所有多餘的文件,而不只是選中的檔。
                 /V :: 生成詳細輸出,同時顯示跳過的檔。
                /TS :: 在輸出中包含原始檔案的時間戳記。
                /FP :: 在輸出中包含檔的完整路徑名稱。
             /BYTES :: 以位元組列印大小。
                /NS :: 無大小 - 不記錄檔大小。
                /NC :: 無類別 - 不記錄檔類別。
               /NFL :: 無檔清單 - 不記錄檔案名。
               /NDL :: 無目錄清單 - 不記錄目錄名稱。
                /NP :: 無進度 - 不顯示已複製的百分比。
               /ETA :: 顯示複製檔的預期到達時間。
           /LOG:文件:: 將狀態輸出到日誌檔(覆蓋現有日誌)。
          /LOG+:文件:: 將狀態輸出到日誌檔(附加到現有日誌中)。
        /UNILOG:文件:: 以 UNICODE 方式將狀態輸出到日誌檔(覆蓋現有日誌)。
       /UNILOG+:文件:: 以 UNICODE 方式將狀態輸出到日誌檔(附加到現有日誌中)。
               /TEE :: 輸出到控制台視窗和日誌檔。
               /NJH :: 沒有作業標頭。
               /NJS :: 沒有作業摘要。
           /UNICODE :: 以 UNICODE 方式輸出狀態。
------------------------------------------------------------------------------
作業選項 :
------------------------------------------------------------------------------
       /JOB:作業名稱:: 從命名的作業檔中提取參數。
      /SAVE:作業名稱:: 將參數保存到命名的作業檔
              /QUIT :: 處理命令列後退出(以查看參數)。
              /NOSD :: 未指定原始目錄。
              /NODD :: 未指定目標目錄。
                /IF :: 包含以下檔。

0 TrackBacks

Listed below are links to blogs that reference this entry: 超強檔案複製指令robocopy.

TrackBack URL for this entry: http://blog.db.idv.tw/cgi-bin/mt/mt-tb.cgi/42

Leave a comment