zoukankan      html  css  js  c++  java
  • SVN备份批处理文件

    SVN备份批处理文件,亲测可用

    另外,备份文件时获取文件名%%~ni 可改为%%~nxi,以避免文件名中有“.”号时,读取不完成,将.后面的当作后缀名

    需要使用hotcopy 时,可以将关键代码进行相关的修改

    ----------------

    @echo off
    :: 关闭回显

    :: 说明:如有命令不明白,请使用帮助命令:命令/? 。如:for/?

    :: 设置标题
    title SVN备份脚本 by zjl

    rem 设置变量

    :: SVN_HOME svn程序的安装路径,指定到bin目录上一级。(如果路径有空格,请用""。)
    set SVN_HOME="D:Program FilesVisualSVN Server"
    :: SVN库的路径
    set SVN_ROOT=D:Repositories
    :: 备份SVN父目录的路径
    set SVN_BACKUP_ROOT=D:svn_bak
    :: 获取当前系统日期和时间用来创建目录,格式:年月日_时分秒毫秒。如:20131129_16275274
    set TIME_DIR=%date:~,4%%date:~5,2%%date:~8,2%_%time:~,2%%time:~3,2%%time:~6,2%%time:~9,2%
    :: SVN备份子目录的路径
    set BACKUP_DIRECTORY=%SVN_BACKUP_ROOT%\%TIME_DIR%
    :: 日志文件路径(将日志和备份文件放在一个目录,删除时一起删除了)
    set LOG=%BACKUP_DIRECTORY%ackup.log
    :: 指定备份文件删除时间(单位:天)。0 - 32768 范围内的任何数字。
    set NUM=30

    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%
    :: 建立日志
    @echo [info]%date:~,10% %time:~,2%:%time:~3,2%:%time:~6,2%建立备份目录:%BACKUP_DIRECTORY% >>%LOG%
    :: 备份SVN版本库并输出日志到文件
    for /d %%i in (%SVN_ROOT%*) do (
    @echo 备份 %%~ni 库,备份文件名:%%~ni.dmp >>%LOG%
    :: 完整备份(增量备份在dump后面添加参数 --incremental)
    %SVN_HOME%insvnadmin dump %SVN_ROOT%\%%~ni >%BACKUP_DIRECTORY%\%%~ni.dmp 2>>%LOG%
    )
    :: 输出备份命令退出码,用来判断是否备份成功。成功的退出码为0.
    @echo [info]%date:~,10% %time:~,2%:%time:~3,2%:%time:~6,2%退出码为:%errorlevel%>>%LOG%
    :: 自动设置计划任务:每周六 晚上11点执行本脚本。修改请参考:http://www.doc88.com/p-052298888776.html
    at 23:00 /next:S %~f0>>%LOG%
    :: 删除过期备份
    goto delete

    :delete
    :: 输出要删除的目录到日志文件
    @echo [info]%date:~,10% %time:~,2%:%time:~3,2%:%time:~6,2%删除%NUM%天前的备份:>>%LOG%
    forfiles /P %SVN_BACKUP_ROOT% /M *_* /D -%NUM% /C "cmd /c echo 删除文件夹:@file">>%LOG%
    :: 使用rd命令删除超过%NUM%天的备份目录。如果不存在匹配条件的目录,将提示:错误: 用指定的搜索标准没有找到文件。如果存在匹配的文件,则提示:目录名无效
    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

  • 相关阅读:
    Jenkins配置:添加用户和管理权限
    Jenkins安装与配置
    jenkins配置邮件通知
    Jenkins 配置邮件通知
    jenkins+SVN配置
    第九周学习进度
    梦断代码阅读笔记 01
    第八周学习进度
    “理了么”软件特点NABCD个人分析
    第七周学习进度
  • 原文地址:https://www.cnblogs.com/76674718/p/6095068.html
Copyright © 2011-2022 走看看