文章目錄[隱藏]
@echo off
:: 關閉回顯
:: 設定標題
rem 設定變數
set svn_backup_root=d:\svnbackup
:: 獲取當前系統日期和時間用來建立目錄,格式:年月日 _ 時分秒毫秒。如:20131129_16275274
set time_dir=%date:~,4%%date:~5,2%%date:~8,2%_%time:~,2%%time:~3,2%%time:~6,2%%time:~9,2%
set backup_directory=%svn_backup_root%\%time_dir%
:: 日誌檔案路徑(將日誌和備份檔案放在乙個目錄,刪除時一起刪除了)
set log=%backup_directory%\backup.log
:: 指定備份檔案刪除時間(單位:天)。0 - 32768 範圍內的任何數字。
set num=365
rem 開始備份 svn
:: 判斷 svn 程式是否存在
if not exist %svn_home% goto error
goto start
:start
:: 查詢日誌大小(單位:位元組),超過 1mb 就新建乙個 (日誌放入備份目錄後,此語句無效。僅備份!)
:: for /r %svn_backup_root% %%i in (backup.log) do if %%~zi geq 1048576 ren %log% backup_%time%.log
:: 新建目錄
mkdir %backup_directory%
:: 建立日誌
:: 備份 svn 版本庫並輸出日誌到檔案
for /d %%i in (%svn_root%\*) do (
@echo 備份 %%~ni 庫,備份檔案名:%%~ni.dmp >>%log%
:: 完整備份(增量備份在 dump 後面新增引數 --incremental)
%svn_home%\bin\svnadmin dump %svn_root%\%%~ni >%backup_directory%\%%~ni.dmp 2>>%log%
):: 輸出備份命令退出碼,用來判斷是否備份成功。成功的退出碼為 0.
:: 自動設定計畫任務:每週六 晚上 11 點執行本指令碼。
at 23:00 /next:s %~f0>>%log%
:: 刪除過期備份
goto delete
:delete
:: 輸出要刪除的目錄到日誌檔案
forfiles /p %svn_backup_root% /m *_* /d -%num% /c "cmd /c echo 刪除資料夾:@file">>%log%
forfiles /p %svn_backup_root% /m *_* /d -%num% /c "cmd /c rd /s/q @path" 2>>%log%
goto end
:error
echo [error]%date:~,10% %time:~,2%:%time:~3,2%:%time:~6,2%程式目錄不存在,請檢查:%svn_home%>>%log%
goto end
:end
:: 輸出一行空行分割日誌
@echo. >>%log%
exit
:: 除錯指令碼用的命令
:: at 16:06 %~f0
:: pause
:: exit
svn定時備份指令碼
參考 以下指令碼可直接拿去用,待完善 刪除定時備份 echo off 關閉回顯 設定標題 title svnbackup remset variable svn home svn程式的安裝路徑,指定到bin目錄上一級。如果路徑有空格,請用 set svn home c program files v...
bat定時關機指令碼
有時因為測試或者其他原因,需要電腦在人不在的時候依舊開著,但又不希望一直開著,這時希望能有乙個簡單的定時關機方法。網上有很多相關的軟體,這裡提供乙個bat指令碼實現的方法。echo off 使用set進行設定變數,並使用 p引數讓命令暫停執行,提供使用者在cmd視窗輸入變數的機會 set ht ti...
svn備份指令碼
svn備份一般採用三種方式 1 svnadmin dump 2 svnadmin hotcopy 3 svnsync.注意,svn備份不宜採用普通的檔案拷貝方式 除非你備份的時候將庫暫停 如copy命令 rsync命令。筆者曾經用 rsync命令來做增量和全量備份,在季度備份檢查審計中,發現備份出來...