本機是192.168.1.1 備份到192.168.1.123跟1.100
在從使用中的複製到這邊來,修改過程可能會一些小錯誤,使用前要測試一下
:: 設定 日期 變數 =====================================================================================
for /f "tokens=1,2,3 delims=/ " %%i in ("%date%") do set CUR-DRB=%%i-%%j-%%k
:: 設定 日期 變數 i=y j=m k=d , SQL要用的
for /f "tokens=1,2,3 delims=/ " %%i in ("%date%") do set CUR-DRB-SQL=%%j-%%k-%%i
::工作排程找不到要刪的資料夾, 可能會出現0x2訊息
::設定刪除資料夾日期變數 前7天 6/1會刪掉5/25資料夾
echo wscript.echo dateadd("d",-7,date) >%tmp%\tmp.vbs
for /f "tokens=1 delims=/" %%a in ('cscript /nologo %tmp%\tmp.vbs') do set yyyy=%%a
for /f "tokens=2 delims=/" %%b in ('cscript /nologo %tmp%\tmp.vbs') do set mm=%%b
for /f "tokens=3 delims=/" %%c in ('cscript /nologo %tmp%\tmp.vbs') do set dd=%%c
::補 0 , 要用來刪資料夾的
if %mm% LEQ 9 set mm=0%mm%
if %dd% LEQ 9 set dd=0%dd%
set filename=%yyyy%-%mm%-%dd%
REM 每天備份WEB開始,先寫記錄時間 =====================================================================================
echo 開始 ZIP 時間 %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8% > C:\BACKUPBAT\logs\%CUR-DRB%.log
path C:\Program Files\7-Zip
7z a -tzip D:\WEB_BACKUP\%CUR-DRB%\JAVA_%CUR-DRB%.zip D:\JAVA\ >> C:\BACKUPBAT\logs\%CUR-DRB%.log
echo 完成 ZIP 時間 %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8% >> C:\BACKUPBAT\logs\%CUR-DRB%.log
:: 刪資料夾,刪7天前的資料夾
RD /S /Q D:\WEB_BACKUP\%filename%
REM 一二三四五六日,xp是顯示星期,不是週
REM if not "%date:~11,2%" =="週日" goto go_to_exit
REM 每周備份WEB_TO_1_123開始,先寫記錄時間 ===========================================================================
echo WEB_BY_WEEK_TO_1_123 開始備份時間 %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8% >> C:\BACKUPBAT\logs\%CUR-DRB%.log
::Set 備份到192.168.1.123參數
set SERVER_NAME=192.168.1.123
set SERVER_PATH=backup\192_168_1_1\web
net use "\\%SERVER_NAME%" /user:lsadmin 1gnutat
:: 備份 本機 到 異機
robocopy D:\WEB_BACKUP\%CUR-DRB%\ \\%SERVER_NAME%\%SERVER_PATH%\%CUR-DRB% /mir /COPY:DT /FFT >> C:\BACKUPBAT\logs\%CUR-DRB%.log
if '%errorlevel%' NEQ '1' exit /B
:: 刪遠端的資料夾,刪7天前的資料夾
RD /S /Q \\%SERVER_NAME%\%SERVER_PATH%\%filename%
::斷掉原本連線
net use "\\%SERVER_NAME%" /delete
echo WEB_BY_WEEK_TO_1_123 完成備份時間 %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8% >> C:\BACKUPBAT\logs\%CUR-DRB%.log
REM 每周備份SQL_TO_1_123開始,先寫記錄時間 ===========================================================================
echo SQL_BY_WEEK_TO_1_123 開始備份時間 %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8% >> C:\BACKUPBAT\logs\%CUR-DRB%.log
::設定路徑
set SERVER_PATH=BACKUP\192_168_1_1\sql
:: 備份 本機 到 1_123 上日期 資料夾
XCOPY D:\SQL_BACKUP\VA \\%SERVER_NAME%\%SERVER_PATH%\%CUR-DRB% /D:%CUR-DRB-SQL% /K/E/Y/C/I/H
if '%errorlevel%' NEQ '0' exit /B
:: 刪上星期備份的資料夾
RD /S /Q \\%SERVER_NAME%\%SERVER_PATH%\%filename%
::斷掉原本連線
net use "\\%SERVER_NAME%" /delete
echo SQL_BY_WEEK_TO_1_123 完成備份時間 %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8% >> C:\BACKUPBAT\logs\%CUR-DRB%.log
REM 每周備份WEB_TO_1_100開始,先寫記錄時間 ===========================================================================
echo WEB_BY_WEEK_TO_1_100 開始備份時間 %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8% >> C:\BACKUPBAT\logs\%CUR-DRB%.log
::重新設定路徑
set SERVER_NAME=192.168.1.100
set SERVER_PATH=backup\192_168_1_1\web
::重新連線新路徑
net use "\\%SERVER_NAME%" /user:lswin 1gnutat
:: 備份 來源端資料 到 目的端資料夾 日期 資料夾
XCOPY D:\WEB_BACKUP\%CUR-DRB% \\%SERVER_NAME%\%SERVER_PATH%\%CUR-DRB% /D/K/E/Y/C/I/H
if '%errorlevel%' NEQ '0' exit /B
:: 刪上星期備份的資料夾
RD /S /Q \\%SERVER_NAME%\%SERVER_PATH%\%filename%
echo WEB_BY_WEEK_TO_1_100 完成備份時間 %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8% >> C:\BACKUPBAT\logs\%CUR-DRB%.log
REM 每周備份SQL_TO_1_100開始,先寫記錄時間 ===========================================================================
echo SQL_BY_WEEK_TO_1_100 開始備份時間 %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8% >> C:\BACKUPBAT\logs\%CUR-DRB%.log
::設定路徑
set SERVER_PATH=BACKUP\192_168_1_1\sql
:: 備份 D:\LSHEMRDB-Backup 到 1_100 上日期 資料夾
XCOPY D:\SQL_BACKUP\VA \\%SERVER_NAME%\%SERVER_PATH%\%CUR-DRB% /D:%CUR-DRB-SQL% /K/E/Y/C/I/H
if '%errorlevel%' NEQ '0' exit /B
:: 刪上星期備份的資料夾
RD /S /Q \\%SERVER_NAME%\%SERVER_PATH%\%filename%
::斷掉原本連線
net use "\\%SERVER_NAME%" /delete
REM 完成sql備份到 1_100
echo SQL_BY_WEEK_TO_1_100 完成備份時間 %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8% >> C:\BACKUPBAT\logs\%CUR-DRB%.log
REM 離開
REM pause
del /F /S C:\BACKUPBAT\logs\%filename%.log
exit /B
REM 如果不是週日,跳來這離開
:go_to_exit
REM pause
del /F /S C:\BACKUPBAT\logs\%filename%.log
exit /B
=======================================================
robocopy
可參考 : http://basuya.blogspot.tw/2009/12/robocopy.html
/MAXAGE:n :: 最長的檔存在時間 - 排除早於 n 天/日期的檔。 /MINAGE:n :: 最短的檔存在時間 - 排除晚於 n 天/日期的檔。
備份前一天產生的資料
robocopy d:\DB-Backup z:\DB-backup /mir /COPY:DT /FFT /MINAGE:1 /MAXAGE:2
3/23 執行,會備份3/22
列出完整的參數說明: 可以用「robocopy /?」 取得說明
下面列出完整的參數說明: (也可以用「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 :: 包含以下檔。
20150422補充
7-zip 官方命令文件
https://7-zip.googlecode.com/hg/help-src/cmdline/index.htm
備份的語法,這是可以的,20150422測試ok,排除App_Date, 符號 " 可能不用
7z a -tzip -xr!"inetpub\wwwroot\xxxxx\App_Data\*.*" F:\WEB_BACKUP\%CUR-DRB%\Inetpub_%CUR-DRB%.zip C:\Inetpub >> C:\backup_bat\logs\%CUR-DRB%.log

沒有留言:
張貼留言