svnadmin dump
命令可以导出指定的版本,可以通过cron
计划任务定时执行脚本达到定时增量备份svn仓库的目的
增量备份svn脚本
创建备份脚本并赋予可执行权限/home/backup/svnbackup.sh
# !bin/bash
# svn仓库目录
repo=/home/svn/test
# 备份目录
src=/home/backup/test
#=======================================
# 脚本所在目录
basepath=$(cd "$(dirname "$0")";pwd)
# 配置文件
cfg=${basepath}/svn.conf
# 读取配置文件中上次备份版本
v0=
if [ -f $cfg ]; then
v0=$(cat $cfg)
fi
if [ ! $v0 ]; then
echo "未备份过,从0开始"
let v0=0
else
echo "上次备份版本号: $v0"
let v0++
fi
# 查询当前仓库版本
v1=$(svnlook youngest ${repo})
echo "当前仓库版本号: $v1"
if [ $v0 -gt $v1 ]
then
echo "没有新增,无需备份"
exit 0
fi
if [ ! -d "${src}" ]; then
mkdir -p "${src}"
fi
# 备份文件
dumpfile=${src}/${v0}-${v1}.dump
if [ -f $dumpfile ]; then
echo "当前仓库版已备份"
echo $v1 > $cfg
exit 0
fi
# 开始备份
let v0++
echo "备份仓库 $repo 版本号: $v0-$v1 -> $dumpfile"
svnadmin dump ${repo} -r ${v0}:${v1} --incremental > $dumpfile
# 写入配置文件
echo $v1 > $cfg
- 这里要修改repo仓库所在目录
- 修改备份文件绝对目录src
- 备份时会在脚本所有目录生成一个svn.conf配置文件记录已经备份的最新版本号,如果不当文件不存在则从版本0开始备份,手动修改/删除配置文件会导致备份版本号出错。
- 备份文件名为
开始版本号-结束版本号.dump
添加定时任务
crontab -e
# 每周日零晨3点备份
0 3 * * 0 /home/backup/svnbackup.sh
重启
systemctl restart crond