ROBOCOPY :: Robust File Copy for Windows

多年來,微軟公司一直爲我們提供一項複製工具:Robocopy(Robust File Copy for Windows,Windows可靠文件複製)。Windows Server 2008也提供了Robocopy。Robocopy是一個支持在服務器之間單向(或雙向)複製內容的命令行工具。這個工具雖然不如DFS健壯,但是多年的應用也已經證明了這個工具的價值。

和DFSN不同,當主服務器發生失效時,Robocopy並沒有爲我們提供一種方法來重定向備份服務器。Robocopy的真正意義在於:Robocopy以一種易於配置的方式爲我們在文件夾之間進行內容複製提供了支持。我們可以通過批處理文件使用Robocopy,也可以使用Windows Task Scheduler調度Robocopy的執行,等等。我們不需要在服務器中安裝Robocopy,此外,Robocopy可以在先前版本的Windows中工作。

Robocopy提供了大量命令參數,我們可以用多種方法執行Robocopy。Robocopy提供的功能包括:複製或移動文件夾、選擇需要處理的子文件夾、複製NTFS權限、添加或刪除文件屬性、指定包含或排除哪些文件(以及文件夾或類型),等等。Robocopy功能強大,使用方式靈活,但是仍然存在一定缺陷。

Robocopy的缺點之一就是需要從Windows Task Scheduler中運行,因此,在創建、更新或刪除文件時,Robocopy無法獲取文件句柄,這就意味着:如果一臺服務器創建了某個文件,同時這個文件還沒有複製到其他服務器中,那麼Robocopy將無法確定這種情況是因爲服務器1新近創建了一個新文件,還是因爲服務器2刪除了一個文件而導致出現的。這表明:雙向鏡像也不是完全可靠的。爲了解決這個問題,可以將某臺服務器設置爲主服務器,而其他服務器僅僅保存了主服務器中文件的副本,可以使用/PURGE或/MIR(即鏡像)屬性創建一個真實的副本。這樣,如果源服務器中沒有保存這個文件,那麼利用這些屬性,Robocopy可以刪除目標服務器中的這個文件。如果需要執行故障轉移,那麼應該馬上禁用/PURGE或/MIR,這樣,當Robocopy下一次運行時,就不會將新創建的文件刪除。另一種方法是:不使用/PURGE或/MIR,這樣,其他服務器中的新文件就不會被錯誤地刪除。如果採用這種方法,那麼隨着時間的推移,必須定期進行清理工作,因爲採用這種方法時,並沒有真正地將文件刪除,除非將兩臺服務器中的文件全部刪除。

下面給出一個在兩臺服務器之間執行雙向複製的批處理文件示例。首先,創建一個名爲robocopyexample.bat的文件,並將以下內容添加到這個文件中:

  1. robocopy.exe "D:\Domains" "\\10.0.0.10\domains$" /LOG+:"
  2. D:\Robocopylogs\Example Logs To.txt" /E /W:10 /R:3 /SEC /XO
  3.  
  4. robocopy.exe "\\10.0.0.10\domains$" "D:\Domains" /LOG+:"
  5. D:\Robocopylogs\Example Logs From.txt" /E /W:10 /R:3 /SEC /XO

這個批處理文件實際上只有兩行內容,請注意換行只是爲了使文件內容更爲清晰易懂,這個文件非常簡單,使用了一條語法爲ROBOCOPY source destination [file [file]...][options]的命令。

如果在路徑中有空格,那麼請務必將這個路徑包含在引號中。/LOG+:{path}將把操作日誌記錄到指定的路徑中,+表示添加而不是覆蓋重寫。/E屬性表示複製所有的子文件夾,即使這些子文件夾爲空。/W:10是指重試時等待10秒(默認值爲30秒),/R:3表示最大重試次數爲3次(默認爲無窮多次),/SEC將複製所有的NTFS安全設置,確保所有的文件系統都是NTFS文件系統。最後,/XO表示根據舊時間戳排除文件,這將導致擁有最新時間戳的文件被優先考慮。注意上面提供了兩條不同的命令,每條命令分別執行一個方向的操作。

如果在命令行中執行Robocopy.exe /???,那麼可以看到一個完整的命令列表。目前,與DFS類似的工具越來越多,所以在Web farm中使用Robocopy越來越少,但是還是有很多人使用Robocopy。之所以如此,部分是因爲某些公司無法在產品內容服務器中安裝DFS,部分是因爲存在其他因素。

IIS Shared Configuration也可以使用Robocopy。還可以使用Robocopy複製在Web farm中被遷移到其他服務器中的配置文件。不管如何使用Robocopy,都應該首先理解Robocopy,並且需要掌握Robocopy在Web farm中的用處。

使用方法:

 -------------------------------------------------------------------------------

   ROBOCOPY     ::     Robust File Copy for Windows     ::     Version XP010
-------------------------------------------------------------------------------

  Started : Thu Jan 11 16:02:25 2007

              Usage :: ROBOCOPY source destination [file [file]...] [options]
使用規則:robocopy 源目錄 文件 參數

             source :: Source Directory (drive:/path or //server/share/path).
源:源目錄包括 (盤符:/路徑 或 //服務器//共享目錄/路徑)

        destination :: Destination Dir  (drive:/path or //server/share/path).
目錄::目錄路徑(盤符:/路徑 或 //服務器/共享目錄/路徑)

               file :: File(s) to copy  (names/wildcards: default is "*.*").
文件:被copy的文件 (文件名或文件類型:默認情況下是所有文件*.*)

::
:: Copy options :
copy參數
::
                 /S :: copy Subdirectories, but not empty ones.
/s表示包括除空文件下的所有子目錄,如果沒有則僅複製指定目錄下的文件而不包括子目錄

                 /E :: copy subdirectories, including Empty ones.
/e表示複製所有子目錄包括空文件夾

             /LEV:n :: only copy the top n LEVels of the source directory tree.
/lev:n表示複製的層級,比如指定層級後c:/windows/temp(二級)下的文件會被複制,而c:/windows/temp/downloads(三級)下的文件則不被複制

                 /Z :: copy files in restartable mode.
/z以啓動模式下拷貝文件

                 /B :: copy files in Backup mode.
以備份模式copy文件
                /ZB :: use restartable mode; if access denied use Backup mode.
/zb表示優先使用啓動模式,否則使用備份模式

  /COPY:copyflag[s] :: what to COPY (default is /COPY:DAT).
                       (copyflags : D=Data, A=Attributes, T=Timestamps).
                       (S=Security=NTFS ACLs, O=Owner info, U=aUditing info).
/copy包含參數datsou比如:/copy:datsou(也可以用/copyall),表示將所有源文件夾的信息複製到目標文件夾中,其中D=文件數據,A=文件屬性,T=時間信息,S=權限信息,O=所有者信息,U=審覈信息。

               /SEC :: copy files with SECurity (equivalent to /COPY:DATS).
/sec表示copy文件並帶安全屬性信息,等同於/copy:dats

           /COPYALL :: COPY ALL file info (equivalent to /COPY:DATSOU).
/copyall等同於/copy:datsou

            /NOCOPY :: COPY NO file info (useful with /PURGE).
/nocopy表示copy文件不附帶任何屬性信息

             /PURGE :: delete dest files/dirs that no longer exist in source.
               /MIR :: MIRror a directory tree (equivalent to /E plus /PURGE).
/mir的作用等同於/purge /e,/purge表示清理目標文件夾有而源文件夾裏沒有的文件(夾)。通過這個命令,能保證源文件夾和目標文件夾結構與文件完全相同。這在創建鏡像備份時,非常有用。


               /MOV :: MOVe files (delete from source after copying).
/mov表示當從源文件移動到目的地以後,將源文件刪除,只作用於文件,不作用於目錄。

              /MOVE :: MOVE files AND dirs (delete from source after copying).
/move表示把源文件和目錄結構都移動到目的地,源位置文件和目錄結構都會被刪除,起剪貼作用

       /A+:[RASHNT] :: add the given Attributes to copied files.
       /A-:[RASHNT] :: remove the given Attributes from copied files.
/a+、/a- 等參數表示對文件屬性進行操作,分別表示在文件被拷貝後爲文件添加、去除某屬性

            /CREATE :: CREATE directory tree and zero-length files only.
/create表示只創建目錄結構並創建0長度的文件。目的是隻要文件結構的情況下。

               /FAT :: create destination files using 8.3 FAT file names only.
               /FFT :: assume FAT File Times (2-second granularity).
               /256 :: turn off very long path (> 256 characters) support.

             /MON:n :: MONitor source; run again when more than n changes seen.
             /MOT:m :: MOnitor source; run again in m minutes Time, if changed.
/mot後接的是時間(分鐘),是指Robocopy執行操作的最短時間;/mon後接的是最少文件修改個數。在監視過程中,會自動記錄時間和修改的次數,只有同時符合以上兩個條件時,Robocopy纔開始執行,執行完成後,這兩個數據會自動清零,並重新開始監視文件夾,除非用戶關閉命令提示符窗口或按下Ctrl+Break鍵.

      /RH:hhmm-hhmm :: Run Hours - times when new copies may be started.
/RH:hhmm-hhmm指定Robocopy開始的時間段和結束時間段,在這個時間段外,拷貝會被暫停。時間爲24小時格式,4個數字長,從0000到2359,而且兩個數字不能相同

                /PF :: check run hours on a Per File (not per pass) basis.

             /IPG:n :: Inter-Packet Gap (ms), to free bandwidth on slow lines.

::
:: File Selection Options :
文件可選屬性
::
                 /A :: copy only files with the Archive attribute set.
                 /M :: copy only files with the Archive attribute and reset it.
/a表示只copy存檔屬性的文件,/m表示將只具有存檔屬性的文件拷貝到目標盤後,將拷貝生成的文件的存檔屬性去掉。


    /IA:[RASHCNETO] :: Include only files with any of the given Attributes set.
    /XA:[RASHCNETO] :: eXclude files with any of the given Attributes set.
/xa:[屬性],/xa:h表示將具有隱藏屬性的排除出複製範圍,與之相對應的是/ia,表示包括只對擁有指定屬性的執行操作。屬性有R:只讀,A:存檔,S:系統,H:隱藏等幾種供選擇

 /XF file [file]... :: eXclude Files matching given names/paths/wildcards.
 /XD dirs [dirs]... :: eXclude Directories matching given names/paths.
/xf爲指定不執行復制操作的文件類型,後面的文件名支持通配符(/xf *.tmp *.bak)。/xd表示排除後面指定的文件夾.

                /XC :: eXclude Changed files.
/xc不執行拷貝改變過得文件
                /XN :: eXclude Newer files.
/xn不copy新曾文件
                /XO :: eXclude Older files.
/不copy老文件
                /XX :: eXclude eXtra files and directories.
/保持現有文件現狀,只更新,不執行多餘的文件或目錄
                /XL :: eXclude Lonely files and directories.

                /IS :: Include Same files.
/is文件相同,不做copy,但是文件的屬性進行更新,經常和/copy一起結合使用比如:robocopy c:/windows/temp c:/windows/temp/downloads /is /copy:sou

                /IT :: Include Tweaked files.

             /MAX:n :: MAXimum file size - exclude files bigger than n bytes.
             /MIN:n :: MINimum file size - exclude files smaller than n bytes.
/max:n /max:6000000表示僅複製不大於6000000bytes的文件,數值單位爲byte。如果是/min:6000000,則複製不小於6000000bytes的文件。兩個參數可以同時使用,界定複製文件大小的範圍

          /MAXAGE:n :: MAXimum file AGE - exclude files older than n days/date.
          /MINAGE:n :: MINimum file AGE - exclude files newer than n days/date.
/maxage:n表示最遠修改時間的文件,修改時間比這個還要舊的文件將不會被複制。/maxage:後可接數字,也可以接日期,數字小於1900時表示天數,否則就得用YYYYMMDD來表示具體的日期,如/maxage:20070110表示2007年1月10日後被修改的文件才允許複製。與之相對應的參數是/minage,表示最近修改時間,比這個時間新的文件將不被複制。

          /MAXLAD:n :: MAXimum Last Access Date - exclude files unused since n.
          /MINLAD:n :: MINimum Last Access Date - exclude files used since n.
                       (If n < 1900 then n = n days, else n = YYYYMMDD date).

                /XJ :: eXclude Junction points. (normally included by default).

::
:: Retry Options :
::
               /R:n :: number of Retries on failed copies: default 1 million.
/r:n重試次數,當複製出錯時,重新嘗試複製的次數,默認時一百萬次
               /W:n :: Wait time between retries: default is 30 seconds.
/w:n表示當上次一重試複製失敗後下一次開始的時間間隔,默認時30秒

               /REG :: Save /R:n and /W:n in the Registry as default settings.
/reg 使用/reg以後,表示將/w:n /r:n一起結合使用,並取他們的默認參數值。

               /TBD :: wait for sharenames To Be Defined (retry error 67).

::
:: Logging Options :
日誌輸出參數
::
                 /L :: List only - don't copy, timestamp or delete any files.
                 /X :: report all eXtra files, not just those selected.
                 /V :: produce Verbose output, showing skipped files.
                /TS :: include source file Time Stamps in the output.
                /FP :: include Full Pathname of files in the output.

                /NS :: No Size - don't log file sizes.
                /NC :: No Class - don't log file classes.
               /NFL :: No File List - don't log file names.
               /NDL :: No Directory List - don't log directory names.

                /NP :: No Progress - don't display % copied.
/np表示不顯示copy進度,在robocopy裏面進度大叫以%顯示。

               /ETA :: show Estimated Time of Arrival of copied files.
/eta總結複製過的文件花去的時間

          /LOG:file :: output status to LOG file (overwrite existing log).
         /LOG+:file :: output status to LOG file (append to existing log).
默認情況下,Robocopy的操作過程只是在命令提示符中顯示,我們可以讓它把操作過程輸出爲TXT文件,加上“/log:文件名.txt”即可

               /TEE :: output to console window, as well as the log file.

               /NJH :: No Job Header.
               /NJS :: No Job Summary.

::
:: Job Options :
::
       /JOB:jobname :: take parameters from the named JOB file.
      /SAVE:jobname :: SAVE parameters to the named job file
/save:任務名 可以將當前操作記錄爲任務文件,通過 /job:任務名 就可以方便調用,不需要再輸入一長串的命令了

              /QUIT :: QUIT after processing command line (to view parameters).
/quit 命令行完成之後,退出程序

              /NOSD :: NO Source Directory is specified.
              /NODD :: NO Destination Directory is specified.
                /IF :: Include the following Files.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章