SVN定時備份bat指令碼

2021-10-22 13:33:01 字數 1786 閱讀 5802

文章目錄[隱藏]

@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命令來做增量和全量備份,在季度備份檢查審計中,發現備份出來...