svn备份脚本

svn备份一般采用三种方式:
1)svnadmin dump 
2)svnadmin hotcopy 
3)svnsync.

注意,svn备份不宜采用普通的文件拷贝方式(除非你备份的时候将库暂停),如copy命令、rsync命令。 
笔者曾经用 rsync命令来做增量和全量备份,在季度备份检查审计中,发现备份出来的库大部分都不可用,因此最好是用svn本身提供的功能来进行备份。

优缺点分析
============== 
第一种svnadmin dump是官方推荐的备份方式,优点是比较灵活,可以全量备份也可以增量备份,并提供了版本恢复机制。 
缺点是:如果版本比较大,如版本数增长到数万、数十万,那么dump的过程将非常慢;备份耗时,恢复更耗时;不利于快速进行灾难恢复。 
个人建议在版本数比较小的情况下使用这种备份方式。 
第二种svnadmin hotcopy原设计目的估计不是用来备份的,只能进行全量拷贝,不能进行增量备份; 
优点是:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。 
缺点是:比较耗费硬盘,需要有较大的硬盘支持(俺的备份机有1TB空间,呵呵)。 
第三种svnsync实际上是制作2个镜像库,当一个坏了的时候,可以迅速切换到另一个。不过,必须svn1.4版本以上才支持这个功能。 
优点是:当制作成2个镜像库的时候起到双机实时备份的作用; 
缺点是:当作为2个镜像库使用时,没办法做到“想完全抛弃今天的修改恢复到昨晚的样子”;而当作为普通备份机制每日备份时,操作又较前2种方法麻烦。

#!/usr/bin/perl -w

my $svn_repos="/opt/svn/repos";

my $backup_dir="/opt/backup/svn/";

my $next_backup_file = "weekly_fully_backup.".`date +%Y%m%d`;

$youngest=`svnlook youngest $svn_repos`;

chomp $youngest;

print "Backing up to revision $youngest\n";

my $svnadmin_cmd="svnadmin dump --revision 0:$youngest $svn_repos >$backup_dir/$next_backup_file";

`$svnadmin_cmd`;

open(LOG,">$backup_dir/last_backed_up"); #记录备份的版本号

print LOG $youngest;

close LOG;

#如果想节约空间,则再执行下面的压缩脚本

print "Compressing dump file...\n";

print `gzip -g $backup_dir/$next_backup_file`;

时间: 2024-10-05 06:07:29

svn备份脚本的相关文章

svn备份与还原_脚本_(dump命令)

今天备份svn, 能保证好用就行先, 回头再研究 buerguo.bat @echo off :: 关闭回显 :: 说明:如有命令不明白,请使用帮助命令:命令/? .如:for/? :: 设置标题 title SVN备份脚本 rem 设置变量 :: SVN_HOME svn程序的安装路径,指定到bin目录上一级.(如果路径有空格,请用"".) set SVN_HOME=D:\Develop\VisualSVNServer :: SVN库的路径 set SVN_ROOT=D:\Repos

SVN备份批处理文件

SVN备份批处理文件,亲测可用 另外,备份文件时获取文件名%%~ni 可改为%%~nxi,以避免文件名中有“.”号时,读取不完成,将.后面的当作后缀名 需要使用hotcopy 时,可以将关键代码进行相关的修改 ---------------- @echo off:: 关闭回显 :: 说明:如有命令不明白,请使用帮助命令:命令/? .如:for/? :: 设置标题title SVN备份脚本 by zjl rem 设置变量 :: SVN_HOME svn程序的安装路径,指定到bin目录上一级.(如果

SVN备份,一个强大脚本

公司有台SVN服务器,平时不经常备份.领导最近要求说要定期备份,于是整理了一个脚本,这个脚本是一个网友写的吧,感觉不错,然后就翻译了一次.也收藏下,如果看着排版就把附件下载下来用notepad++看吧,在此也谢谢这个脚本的原创作者,感谢分享 @echo off ##关闭显示处理过程. rem -----设置环境变量-------##rem在cmd中是注释的意思,和::差不多 rem -----设置SVN目录--------  set svnpath=C:\Repositories\##set设置

svn dump增量备份脚本

svn 增量备份脚本, 环境:系统,centos6.5,svn version 1.6.11,httpd Apache/2.2.15 (Unix) APR 1.3.9, APR-Util 1.3.9,全部为yum编译 一些常用命令 svn ls -v /opt/svn/snn                  查看svn目录文件列表 svn --version                      查看svn版本 svnadmin create /opt/svn/snn          

SVN备份/恢复脚本

上一篇介绍了svn的配置,这里就写了两个脚本对svn进行全备和恢复,由于是全备,所以可以做个计划任务,每天执行一次即可.保留几天的数据. 1.备份脚本: #!/bin/sh # # # Description: SVN full backup of the project # Author: Mr.chen # Date: 2015/02/10 # Email:  # # SVN_BASICDIR="/usr/local/svn/bin" DAY=5 # Backup files ke

svn定时备份脚本

参考:https://www.cnblogs.com/yadongliang/p/9297058.html 以下脚本可直接拿去用,待完善(删除定时备份) @echo off :: 关闭回显 :: 说明:如有命令不明白,请使用帮助命令:命令/? .如:for/? :: 设置标题 title SVNBackup rem Set Variable :: SVN_HOME svn程序的安装路径,指定到bin目录上一级.(如果路径有空格,请用"".) set SVN_HOME="C:\

使用svn钩子脚本控制svn库的实时备份

Svn镜像库实时同步实现 一, 配置rsync的同步机制先实现能手动同步 环境:svn源码库 192.168.115.120 Svn镜像库 192.168.115.121 1,在源码库中配置rsync服务 (配置文件默认没有需要手动建立 /etc/rsyncd.cong) 上面 [ UGOR]就是要更新的模块,然后启动服务 rsync –deamo查看服务状态lsof –I 873 注:认证账户格式为 用户:密码,文件权限为 600, (rsync.pass) 2,在镜像库中同步内容执行 rsy

svn备份

公司的svn体量很大,要是一不小心误删了SVN版本库,就要哭了,所以有了下面的备份脚本 #每个版本库完全备份 #!/bin/bash SOUR_SVN="/var/www/svn" DES_SVN="/data/svn-$(date +%F)" [ ! -d "$DES_SVN" ] && mkdir -p "$DES_SVN" DIR=`ls $SOUR_SVN` for i in $DIR do svnad

svn备份脚 本

一直用这套脚本备份,脚本主体虽不是原创,但是从网上得到后因为不能运行也进行了些修改,前两天看到有人问关于SVN备份的问题,今天又把脚本整理了一下,解决了不能循环备份多个配置库的问题.希望对大家有所帮助.在此也谢谢提供脚本主体的高人.我的备份策略是一个月一次全备份,一周一次增量备份,并且每天也进行增量备份,在Window任务里设置定时进行,设置好后就不用管了,再加一层保险就是定期把备份文件移到另外一台机器存储.(一)全备份,包含两个文件hotcopy.bat和最终执行文件fullbackup.ba