1. 程式人生 > >Robocopy命令實現文件服務器鏡像備份/增量備份操作

Robocopy命令實現文件服務器鏡像備份/增量備份操作

robocopy

Robocopy是微軟推出的可靠文件復制服務,經過測試,比xcopy更加優秀,特別是在復制ACL及文件時間戳方面。
免費同步軟件通常在ACL同步這一塊比較薄弱,而付費軟件復雜操作,我們可以使用robocopy結合任務程序做到日常備份和增量備份。

鏡像同步 Left >Right
robocopy "c:\abc" "D:\abc" /mir /copyall /dcopy:DAT /mt:8 /z /xa:sht /a-:h /np /ts /log:H:\RCMB20180502\Log\Robocopy\RBLog%y%.txt
效果是將c盤的abc文件夾(包括abc本身的一切屬性),同步到D盤ABC文件夾內(D盤可以沒有abc文件夾,會自動創建,如果已經存在,會覆蓋abc的ACL),包括abc內一切文件&文件夾,包括所有的ACL和文件屬性,包括所有的文件創建,訪問,修改時間屬性。以8線程的速度運行。斷點續傳。並創建時間日誌。

增量備份
近期備份修改過的文件
robocopy c:\abc d:\monday /mir /copyall /dcopy:DAT /maxage:1 /mt:8
效果是將C\abc 內一天內所有修改過的文件備份到Monday文件夾內。
加/z 支持斷點續傳
技術分享圖片
/xa:h只能排除隱藏文件,目前沒有針對隱藏目錄的命令。只能用/XD 目錄名來排除隱藏目錄。
技術分享圖片
robocopy c:\ d:\aaa /e /XD System Volume Information /XD $RECYCLE.BIN
對於robocopy針對根目錄操作,需要去除System Volume Information和$RECYCLE.BIN這兩個目錄,用/XD參數,/A-:H清除隱藏文件夾屬性.


Robocopy每日定期鏡像備份腳本
用以下腳本可實現如下功能:
創建任務計劃,每日定點運行Robocopy.bat,同步雙方目錄,完成後制作Log到相應的目錄,最後發送郵件到指定郵箱。

echo off
title Robocopy每日定期鏡像備份腳本
echo.

echo 防呆:請修改此腳本配置並刪除此行
pause >nul

:設置當前日期名
set y=%date:~0,4%%date:~5,2%%date:~8,2%

:備份頻率 *
set pinlv=daily

:輸入備份時間 格式"22:00" *
set time=20:00

:存日誌、BAT、郵件插件 *
set weizhi=H:\RCMB%y%

:源路勁 *
set yuan="H:\Software\資訊部20150607"

:目標路勁 *
set mubiao="D:\資訊部20150607"

:任務名字 *
set taskname=DailyMBCopy

:設置郵件
set [email protected]
set user=test
set pass=123456
set [email protected],[email protected]

:郵件腳本形參
set a=%%y%%
set b=%%~dp0Log\Robocopy\RBLog%%y%%.txt
set c=%%~dp0Log\Blatmail\Maillog%%y%%.txt
set d=Robocopy鏡像復制任務已經完成
set e=%from%
set f=%user%
set g=%pass%
set h=%to%

if exist "%weizhi%" goto abc
md "%weizhi%"
md "%weizhi%\Log"
md "%weizhi%\Log\Robocopy"
md "%weizhi%\Log\Blatmail"

:創建復制腳本
echo @echo off >%weizhi%\robocopy_sc.bat
echo title 執行RCMB任務腳本ING >>%weizhi%\robocopy_sc.bat
:當淩晨0點開始到10點前,如果用網上的批處理命名方式,會有個空格。導致無法應用名字。
echo if "%%time:~0,2%%" lss 10 (set y=%%date:~0,4%%%%date:~5,2%%%%date:~8,2%%%%time:~1,1%%%%time:~3,2%%) else (set y=%%date:~0,4%%%%date:~5,2%%%%date:~8,2%%%%time:~0,2%%%%time:~3,2%%)>>%weizhi%\robocopy_sc.bat
:加/tee可以在執行命令的時候查看進度 /np關閉了文件百分比 /xa:sht 排除了系統,隱藏,臨時文件 /mt:8啟用8線程
echo robocopy %yuan% %mubiao% /mir /copyall /dcopy:DAT /mt:8 /z /xa:sht /a-:h /np /ts /log:%weizhi%\Log\Robocopy\RBLog%%y%%.txt ^>nul >>%weizhi%\robocopy_sc.bat
echo start "" %weizhi%\blatmail\blatmail.bat %a% %b% %c% %d% %e% %f% %g% %h% ^>nul >>%weizhi%\robocopy_sc.bat

:創建一個查看並執行任務的測試腳本
echo @echo off >%weizhi%\RunRobocopySchtaskImmediately.bat
echo title 查看並執行該任務 >>%weizhi%\RunRobocopySchtaskImmediately.bat
echo echo ------------------------------------------------------------------------------------->>%weizhi%\RunRobocopySchtaskImmediately.bat
echo schtasks /query /tn dailymircopy /v /fo list>>%weizhi%\RunRobocopySchtaskImmediately.bat
echo echo ------------------------------------------------------------------------------------- >>%weizhi%\RunRobocopySchtaskImmediately.bat
echo echo. >>%weizhi%\RunRobocopySchtaskImmediately.bat
echo echo. >>%weizhi%\RunRobocopySchtaskImmediately.bat
echo echo. >>%weizhi%\RunRobocopySchtaskImmediately.bat
echo echo 任意鍵立刻執行該任務 >>%weizhi%\RunRobocopySchtaskImmediately.bat
echo pause >nul >>%weizhi%\RunRobocopySchtaskImmediately.bat
echo schtasks /run /tn %taskname% >>%weizhi%\RunRobocopySchtaskImmediately.bat
echo echo 任意鍵退出 >>%weizhi%\RunRobocopySchtaskImmediately.bat
echo pause >nul >>%weizhi%\RunRobocopySchtaskImmediately.bat
echo exit >>%weizhi%\RunRobocopySchtaskImmediately.bat

:復制郵件程序
robocopy "%~dp0blatmail" "%weizhi%\blatmail" /e >nul

:創建任務
schtasks /create /sc %pinlv% /tn %taskname% /tr "%weizhi%\robocopy_sc.bat" /st %time% /rl highest /f
echo 任意鍵查看該任務
pause >nul
cls
echo.
echo.
echo.
echo -------------------------------------------------------------------------------------
schtasks /query /tn dailymircopy /v /fo list
echo -------------------------------------------------------------------------------------
echo "按任意鍵繼續"
pause >nul
goto abc
:abc
start "" %weizhi%
start "" %mubiao%
exit

:abc
cls
echo.
echo.
echo.
echo.
echo 目錄已經存在 請手動刪除後重試
echo 任意鍵退出
pause >nul
exit


另一個腳本為Robocopy每日定時增量備份。
詳情見下載。

最後用Blatmail發送郵件。下載可見。


這是運行腳本後自動創建的目錄文件夾。
技術分享圖片

腳本配置每日定時同步計劃任務
技術分享圖片
效果如下
技術分享圖片

技術分享圖片

這是郵件效果:
技術分享圖片

附件中為Robocopy同步與增量同步腳本,Blatmail文件。

Robocopy命令實現文件服務器鏡像備份/增量備份操作