linux下SVN定时备份并删除历史备份

利用svnadmin hotcopy可以实现完全备份,但不能进行增量备份。svnadmin hotcopy是将整个库都“热”拷贝一份出来,包括库的钩子脚本、配置文件等;任何时候运行这个脚本都得到一个版本库的安全拷贝,不管是否有其他进程正在使用版本库。

优点是:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。

缺点是:比较耗费硬盘,需要有较大的硬盘支持。
在/data/svnbackup目录建立备份脚本svnbak.sh,假如svn仓库路径为/home,要备份到/data/svnbackup/

#!/bin/bash
#
# Filename:    svnbak.sh
# Revision:    1.0
# Date:        2019/02/21
# Author:      Scott
# Email:         79305495@qq.com
# Description: SVN完全备份
# Notes:       将脚本加入crontab中,每天定时执行
MAXDAYS=7                       # 备份保留最大天数
##Subversion的安装目录及执行文件
SVN_HOME=/usr/bin
SVN_ADMIN=$SVN_HOME/svnadmin
SVN_LOOK=$SVN_HOME/svnlook
##配置库根目录
SVN_REPOROOT=/home
##增量备份文件存放路径
BAKDIR=/data/svnbackup
date=$(date ‘+%Y%m%d%H%M%S‘)
RAR_STORE=$BAKDIR/$date
BAKLOG=${BAKDIR}/$date.log    # 定义备份日志
if [ ! -d "$RAR_STORE" ];then
mkdir -p $RAR_STORE
exec 1>$BAKLOG
exec 2>&1
set -x
fi
# 删除历史备份
$find $BAKDIR/ -type f -mtime +$(expr $MAXDAYS - 1) -exec rm -f {} \;
##读取项目库列表
cd $SVN_REPOROOT
for name in $(ls)
do
##开始做全量备份
$SVN_ADMIN hotcopy $SVN_REPOROOT/$name $RAR_STORE/$name
$SVN_LOOK youngest $RAR_STORE/$name
done
cd $BAKDIR
# 压缩备份
tar cvzf $date.tar.gz $date/
rm -rf $date

设置定时crontab 每天23点59分开始执行脚本:

yum install crontabs -y
vi /etc/crontab
59 23 * * * /bin/bash /data/svnbackup/svnbak.sh

原文地址:https://blog.51cto.com/2833238/2353114

时间: 2024-10-17 21:07:26

linux下SVN定时备份并删除历史备份的相关文章

linux下svn定时更新项目

方法一.用shell脚本定时更新项目 1.进入网站的根目录,假设项目位置放在/var/www/test cd /var/www/test 2.建立脚本文件update.sh,分两步进行.首先利用touch命令创建,之后使用vim进行编辑. touch update.sh vim update.sh 输入以下内容 #!/bin/sh while true do svn update --username 你的svn用户名 --password 你的svn密码 sleep 60 done 这里我设置

Linux中SVN定时备份总结

Linux中SVNserver定时备份总结: 本片文章主要是结合前面关于<Linux搭建SVNserver总结>,来说明怎样在Linux下定时备份SVNserver,防止个别情况导致数据丢失的严重后果. 那么实现的流程大致为:我们须要新建一个备份sh脚本,然后使用contab定时运行前面的脚本.以及模拟验证下是否成功,所以还是比較简单的. PS: 至于contab的具体介绍会在兴许总结中列出.在此仅仅需按此操作就可以. <Linux搭建SVNserver总结>地址: http://

linux下mysql定时备份数据库

linux下mysql定时备份数据库 (2010-10-21 12:40:17) 转载▼ 标签: 杂谈   一.用命令实现备份 首页进入mysql的bin目录 1.备份数据#mysqldump -uusername -ppassword discuz > discuz_2010-04-01.sql 这样就把discuz数据库所有的表结构和数据备份到discuz_2010-04-01.sql里了,如果数据量大会占用很大空间,这时可以利用gzip压缩数据, 命令如下:#mysqldump -uuse

linux下svn常用指令

windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的操作都是通过命令行来进行,所以必须得掌握linux下svn的常用指令.当然linux下也有模仿TortoiseSVN的linux X程序,例如RabbitVCS,模仿程度很高,但很容易拖慢X,因此不推荐. (如果是第一次提交文件,很可能会出现"svn:'.'不是工作副本",即当前目录不是工

linux下svn服务安装(转)

linux下svn服务安装 博客分类: Linux SVN 一.环境准备 1.linux版本为centos6.4 X64 2.软件安装 yum install subversion httpd mod_dav_svn mod_perl sendmail mailx wget gcc-c++ make unzip perl* 3.以下所有操作均在root用户下完成 二.SVN服务器配置 1.新建一个目录用于存储SVN所有文件mkdir /home/svn 2.新建一个版本仓库svnadmin cr

linux下svn常用指令(转)

一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的操作都是通过命令行来进行,所以必须得掌握linux下svn的常用指令.当然linux下也有模仿TortoiseSVN的lin

linux下svn命令大全

linux下svn命令大全 1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2.往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) svn add *.php(添加当前目录下所有的php文件) 3.将改动的文件提交到版本库 svn commit -m "LogMessage

Linux下svn常用指令【转】

转自:http://blog.csdn.net/myarrow/article/details/8110858 Windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说.主要说说linux下svn的使用,因为linux下大部分的操作都是通过命令行来进行,所以必须得掌握linux下svn的常用指令.当然linux下也有模仿TortoiseSVN的linux X程序,例如RabbitVCS,模仿程度很高,但很容易拖慢

linux下SVN CVS命令大全

1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn: // 192.168. 1.1 / pro / domain 简写:svn co 2.往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) svn add * .php(添加当前目录下所有的php文件) 3.将改动的文件提交到版本库 svn commit -m “LogMessage“[-N]