SVN備份,一個強大腳本
阿新 • • 發佈:2017-09-03
svn
公司有臺SVN服務器,平時不經常備份。領導最近要求說要定期備份,於是整理了一個腳本,這個腳本是一個網友寫的吧,感覺不錯,然後就翻譯了一次。也收藏下,如果看著排版就把附件下載下來用notepad++看吧,在此也謝謝這個腳本的原創作者,感謝分享
@echo off ##關閉顯示處理過程。 rem -----設置環境變量-------##rem在cmd中是註釋的意思,和::差不多 rem -----設置SVN目錄-------- set svnpath=C:\Repositories\##set設置變量 rem -----設置SVN備份目錄------- set backuppath=E:\Backup\svn rem -----備份時間--- set backupdate=%date:~0,4%%date:~5,2%%date:~8,2%##備份日期,格式為‘20170902‘ set backuptime=%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%##備份日期,格式為‘2017-09-02‘ rem ----日誌文件路徑------ set LogFile=%backuppath%%backupdate%\svn.log ##設置備份的日誌文件,具體路徑套用上述設置的變量值 setlocal enabledelayedexpansion ##啟用延遲變量。具體不明白可以http://www.jb51.net/article/29323.htm ----------------------------------------------------------- 以上內容不會被打印到日誌 -------------------------------------------------------------- if not exist %backuppath%%backupdate% ( md %backuppath%%backupdate% echo %backuptime% 創建備份目錄成功>> %LogFile% ) ###以上做了一個if判斷,exist 是cmd判斷文件是否存在的命令 使用方法有 exist(存在)、not exist(不存在) ###判斷,如果 %backuppath%%backupdate% 不存在則執行()裏面的語句進行創建備份目錄。 ###cmd下的for語句學習:http://blog.csdn.net/xhhjin/article/details/7373524 ###如果在linux或者cmd中命令執行有問題,則可以通過 echo Command > debug.txt 的形式來打印執行信息,看是不是命令執行有問題,這也就是腳本排錯的精髓 echo ------------------------------------------- >> %LogFile% echo %backuptime% 開始備份SVN操作>> %LogFile% echo ------------------------------------------- >> %LogFile% for /f %%I in (‘dir %svnpath% /a:d /b‘) do ( if exist %svnpath%%%I\hooks ( md %backuppath%%backupdate%\%%I ## dir %svnpath% /a:d /b 列出%svnpath%下的信息,將此過程傳遞給定義的%I變量 ##判斷如果存在這個路徑,則執行()內的內容 ##根據判斷存在,進行此步創建 echo %date:~0,4%-%date:~5,2%-%date:~8,2% !time:~0,2!:!time:~3,2!:!time:~6,2!:開始備份%%I >> %LogFile% ## 打印當前時間,在log中標註此過程為開始備份 svnadmin hotcopy %svnpath%%%I %backuppath%%backupdate%\%%I ##svnadmin hotcopy進行熱備一份到備份文件夾下 echo %date:~0,4%-%date:~5,2%-%date:~8,2% !time:~0,2!:!time:~3,2!:!time:~6,2!:完成備份%%I >> %LogFile% ##打印當前時間,在log中標註此過程為開始備份 echo %date:~0,4%-%date:~5,2%-%date:~8,2% !time:~0,2!:!time:~3,2!:!time:~6,2!:開始壓縮%%I >> %LogFile% ##打印當前時間,在log中標註此過程為開始壓縮 "C:\Program Files\HaoZip\HaoZipC.exe" a -tzip %backuppath%%backupdate%\%%I.zip %backuppath%%backupdate%\%%I >> %LogFile% ##調用好壓命令,根據已經備份的文件夾進行壓縮,並打印壓縮過程 echo %date:~0,4%-%date:~5,2%-%date:~8,2% !time:~0,2!:!time:~3,2!:!time:~6,2!:完成壓縮%%I >> %LogFile% ##打印當前時間,在log中標註此過程為完成壓縮 echo %date:~0,4%-%date:~5,2%-%date:~8,2% !time:~0,2!:!time:~3,2!:!time:~6,2!:開始刪除%%I目錄>> %LogFile% ##打印當前時間,將刪除目錄的時間記錄到log日誌中 rd %backuppath%%backupdate%\%%I /s/q ##所有文件全部壓縮後,刪除未被壓縮文件,保留已經壓縮備份的文件 echo %date:~0,4%-%date:~5,2%-%date:~8,2% !time:~0,2!:!time:~3,2!:!time:~6,2!:完成刪除%%I目錄>> %LogFile% ##將此階段在日誌中標註為刪除目錄已完成 ) ) echo %date:~0,4%-%date:~5,2%-%date:~8,2% !time:~0,2!:!time:~3,2!:!time:~6,2!:SVN備份完成>> %LogFile% echo %date:~0,4%-%date:~5,2%-%date:~8,2% !time:~0,2!:!time:~3,2!:!time:~6,2!:開始刪除歷史備份版本>> %LogFile% ----------------------------------------------------------- 以上備份全部完成,以下為刪除歷史備份文件 -------------------------------------------------------------- rem 以下為刪除歷史備份信息,並設置最大保留備份數量 set maxNum=31 for /f "skip=%maxNum%" %%I in (‘dir %backuppath% /a:d /o:-d /b‘) do ( rd %backuppath%%%I /s/q echo %date:~0,4%-%date:~5,2%-%date:~8,2% !time:~0,2!:!time:~3,2!:!time:~6,2!:刪除%%I成功>> %LogFile% ) echo %date:~0,4%-%date:~5,2%-%date:~8,2% !time:~0,2!:!time:~3,2!:!time:~6,2!:完成刪除歷史備份版本>> %LogFile% @echo on
本文出自 “小小小平凡” 博客,謝絕轉載!
SVN備份,一個強大腳本