linux svn 备份脚本,SVN热备份脚本

SVN热备份脚本

2011-08-03  徐磊

#!/bin/sh

#########################################################

# Script to do incremental rsync backups

# modidfy: wanjie.info

# date: 2010/06/04

# 这个脚本不是xulei写的,我只是拿来主义,当然如果大家看不明白,可以提问,给予解释

#########################################################

###################################

# svn backup log path

#  - This is used to log result

###################################

LogFile=~/tmp/svnbackup/svnback.log

DATE=`date +%Y%m%d`

###################################

# mail address for status updates

#  - This is used to email you a status report

###################################

MAILADDR=webmaster@wanjie.info

###################################

# HOSTNAME and project list

#  - This is also used for reporting

###################################

ProjectLst=~/tmp/svnbackup/projectlist.txt

###################################

# backup directory

# - This is the path to the backup directory

###################################

BackDir=~/tmp/svnbackup/$DATE

BACKUPDIR=~/tmp/svnbackup/$DATE

###################################

# svn directory

# - This is the path to the directory you want to archive

###################################

SVNDIR=~/svn

###################################

# svnadmin path

# - This is the path to the directory you want to archive

###################################

SVNADMIN=/usr/bin/svnadmin

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin

# our actual rsyncing function

# 这个函数主要是在备份日志里面打上时间,用了个前面date命令获取到的日期

do_accounting()

{

echo " " >> $LogFile

echo " " >> $LogFile

echo "###########################" >> $LogFile

echo "$DATE" >> $LogFile

echo "###########################" >> $LogFile

cd $BackDir

}

# do_svndump就是这个脚本最主要的部分,通过使用svnadmin dump命令

# 来进行备份。对于SVN的Repository来说,不同数据仓储是按文件夹的形式

# 进行管理的,备份出来的是xxx.dump,这个文件是相当有用处的,无论你是

# 在linux下恢复配置库,还是windows下恢复都可以使用。脚本里面决定是否进行

# 新的备份,是通过xxx.youngest的日志文件的内容来判断的。

do_svndump()

{

PROJECTLIST=`cat $ProjectLst`

cd $SVNDIR

for project in $PROJECTLIST

do

echo "begin to dump $project databases" >> $LogFile

if [ ! -f $BACKUPDIR/$project.dump ]

then

YOUNGEST=`svnlook youngest $project`

svnadmin dump $project > $BACKUPDIR/$project.dump

echo "OK,dump file successfully!!"

echo "$YOUNGEST" > $BACKUPDIR/$project.youngest

else

echo "$project.dump existed,will do increatment job" >> $LogFile

if [ ! -f $BACKUPDIR/$project.youngest ]

then

echo "error, no youngest check!" >> $LogFile

else

PREVYOUNGEST=`cat $BACKUPDIR/$project.youngest`

NEWYOUNGEST=`svnlook youngest $project`

if [ $PREVYOUNGEST -eq $NEWYOUNGEST ]

then

echo " no database updated!" >> $LogFile

else

LASTYOUNGEST=`expr $PREVYOUNGEST + 1`

echo "last youngest is $LASTYOUNGEST" >> $LogFile

svnadmin dump $project --revision $LASTYOUNGEST:$NEWYOUNGEST --incremental > $BACKUPDIR/$project-$LASTYOUNGET-$NEWYOUNGEST.$DATE

echo "$NEWYOUNGEST" > $BACKUPDIR/$project.youngest

fi

fi

fi

done

}

# our post rsync accounting function

# 这个就是把你日志文件的内容当做邮件发送

do_mail()

{

mail $MAILADDR -s svn-back_log < $LogFile

}

# some error handling and/or run our backup and accounting

do_accounting && do_svndump && do_mail

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

这个是比较麻烦的,要是想简单,可以直接hotcopy之后,然后就tar压缩,不用dump备份,因为dump是相当的花时间的。要是天天都备份的话,就很悲剧。

脚本的衍生就是,你可以把你备份出来的东西放置该机器的ftp上,然后再用其他的机器通过脚本,拷走配置库的备份,因为谁都不知道svn服务器是不是会down掉,要是down掉了,一旦你的备份又是在svn服务器上,那就白备份了。

0

该文章对我有帮助

359°|3568 人阅读|3

条评论

b11063a9e6c7d72d354f4047630e4d97.png

金鑫  2011-08-03

要是在配合 注释 就完美了  呵呵

cf43af3bbf389cd35a8b9b6a6ddd8254.png

徐磊  2011-08-03

金鑫: 要是在配合 注释 就完美了  呵呵ok 没问题 重新编辑下

46fce0f6e62927f883752e07a9149682.png

刘旸  2011-08-15

呵呵,还以为是keepalived的脚本呢

请 登录 后发表评论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python如何删除对象属性_如何优雅的删除对象中的指定属性?

要优雅的话&#xff0c;使用 Lodash 的 omit 方法移除不要的属性&#xff1a;const object { a: 1, b: 2, c: 3 };const result _.omit(object, [a, c]);// > { b: 2 }或者用 pick 方法只留下需要的属性&#xff1a;const object { a: 1, b: 2, c: 3 };const result _.p…

java接口的应用举例

/* 接口的理解&#xff1a; 接口就是前期定义一个规则&#xff01;某一个类A&#xff0c;为了扩展自身的功能&#xff0c;对外提供这个接口&#xff0c;后期只要是符合这个接口&#xff08;规则&#xff09; 的类&#xff08;这个类是接口的子类&#xff09;&#xff0c;将子类…

linux 关闭scp服务器,Linux系统如何关闭scp和sftp命令

Linux系统如何关闭scp和sftp命令。sftp介绍sftp是Secure File Transfer Protocol的缩写&#xff0c;安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能scp介绍两台主机之间传输文件一般使用scp命令,通常用scp命令通过ssh获取对方…

自动补足算法是什么_如何自定义Shell(Fish版)的自动补全规则?

默认fish能自动补全的命令已经相当多了,常见的apt-get&#xff0c;rpm等都没问题&#xff0c;但今天却发现没有lsusb的补全规则,查看了下文档&#xff0c;发现规则比bash-completion简单不少&#xff0c;记录下&#xff5e;简单补全1. 建立自动补全规则文件默认自动补全路径由全…

嵌入式Linux安装Python环境,linux环境下安装python 3

说明&#xff1a;在linux环境下&#xff0c;都默认安装python 2的环境&#xff0c;由于python3在python2的基础上升级较大&#xff0c;所以安装python 3环境用于使用最新的python 3的语法。安装过程&#xff1a;1.下载&#xff0c;上传python 3源码包至服务器2.解压缩python 3压…

java接口中多继承的问题

java中支撑多继承吗&#xff1f; 支持-》接口啊 为什么接口支持多继承呢&#xff1f;因为接口中没有方法体&#xff01;即使可能两个接口中有一样的抽象方法&#xff0c;但是 只会调用子类中覆盖该同样抽象方法的具体方法&#xff01;不会引起调用的歧义&#xff01; interface…

图案设计灵感怎么写_平面设计理念怎么写100多字

平面设计求职者在找工作的过程中,有时个人简历起着很重要的作用。下面是由小编整理而成的平面设计简历范文参考&#xff0c;谢谢你的阅读。平面设计简历范文参考(一)xxx一年以上工作经验|男|27岁(3月11日)居住地&#xff1a;杭州电话&#xff1a;151*******(手机)E-mail&#x…

java匿名类和匿名对象及this的其他用法

/* 匿名内部类&#xff1a;就是内部类的简写格式。 必须前提&#xff1a;内部类必须继承或者实现一个类或者接口。 匿名内部类其实就是一个匿名 子类对象。 格式&#xff1a;new 父类对象 or 接口(){子类内容&#xff1b;&#xff08;覆盖父类的&#xff0c; 而且可以增加自己的…

linux下drcom无法上网,drcom为什么还是不能上网啊!

drcom为什么还是不能上网啊&#xff01;发布时间:2010-04-28 20:56:56来源:红联作者:hualong[is] 本帖最后由 hualong 于 2010-4-30 16:45 编辑 [/i]主要是因为我搞很久的drcom&#xff0c;还是不能上网啊&#xff01;&#xff01;截一个图让前辈们帮忙分析一下。安装了bulid-e…

python集合的加减_python 中对list做减法操作

问题描述&#xff1a;假设我有这样两个list&#xff0c;一个是list1&#xff0c;list1 [1, 2, 3, 4, 5]一个是list2&#xff0c;list2 [1, 4, 5]我们如何得到一个新的list&#xff0c;list3&#xff0c;list3中包括所有不在list2中出现的list1中的元素。即&#xff1a;list3 …

java中Comparable实现对象的比较

/* class A implements Comaprable<A>{ } 那么 A x new A(); 类关系图 Object o A; Object Comparable c A; | Comparable A 实现了 Comparable 接口嘛 …

linux db2 归档,DB2的归档模式设置方法

当做在线备份&#xff0c;即加上online参数后&#xff0c;可以看到如下告警&#xff1a;[db2inst1localhost backup]$ db2 backup db sample online to /dev/nullSQL2413N Online backup is not allowed because the database is not recoverableor a backup pending condition…

css提取页面元素唯一性_下面这个函数,能够获取一个元素的任意 CSS 属性值。...

在对网页进行调试的过程中&#xff0c;经常会用到js来获取元素的CSS样式&#xff0c;方法有很多很多&#xff0c;现在仅把我经常用的方法总结如下&#xff1a;1. obj.style&#xff1a;这个方法只能JS只能获取写在html标签中的写在style属性中的值(style”…”)&#xff0c;而无…

Linux检查依赖库,linux 查看依赖库

readelf -d libsurfaceflinger.so打印出来的数据如下&#xff1a;Dynamic section at offset 0xb4 contains 37 entries:Tag Type Name/Value0x00000001 (NEEDED) Shared library: [liblog.so]0x00000001 (NEEDED) …

java中final注意的问题

public class Test{public static void main(String[] args){Person p new Person();} } /* 4.修饰的变量是一个常量(所有字符都大些 XXX 或者 XXX_XXX)&#xff0c;只能赋值一次!final 固化的都是显示初始化的值(定义并初始化)&#xff08;或者构造函数中的特定初始化的值&am…

android判断点击次数_Android应用统计-使用时长及次数统计(一)

关键字&#xff1a; 应用统计 Android源码 应用使用时长 应用使用次数最近在做有关于应用统计有关的工作&#xff0c;主要是统计系统中客户端应用(非系统自带的那些基础应用&#xff0c;比如DownLoadManager)&#xff0c;在每一天的使用情况&#xff0c;统计内容包括&#xff1…

linux+cp+-rdf,简单构建基于RDF和SPARQL的KBQA(知识图谱问答系统)

本文主要通过python实例讲解基于RDF和SPARQL的KBQA系统的构建。该项目可在python2和python3上运行通过。注&#xff1a;KBQA即是我们通常所说的基于知识图谱的问答系统。这里简单构建的EasyKBQA&#xff0c;数据来源于网络&#xff0c;源码地址看下面补充说明。目录&#xff1a…

java中Object.equals()简单用法

/* equals&#xff08;&#xff09;方法默认的比较两个对象的引用&#xff01; */ class Child {int num;public Child(int x){num x;}//人文的抛出运行时异常的好处是&#xff1a;可以自定义错误信息&#xff01;/*public boolean equals(Object o) throws ClassCastExceptio…

cmd imp导入dmp文件_oracle导入dmp文件的2种方法

使用imp、impdp方式导入数据1.使用imp导入数据打开cmd窗口&#xff0c;然后直接敲入一下命令即可&#xff0c;需要注意的是&#xff0c;要事先把dmp文件放到正确的路径中去imp yx_base/yx_192. file E:\yxb\yx_base.dmp log E:\yxb\yx_base.log full y2.使用impdp导入数据(1…

from server sql 拼接统计两个子查询_[SQL SERVER系列]之嵌套子查询和相关子查询

子查询有两种类型&#xff0c;一种是只返回一个单值的子查询&#xff0c;这时它可以用在一个单值可以使用的地方&#xff0c;这时子查询可以看作是一个拥有返回值的函数&#xff1b;另外一种是返回一列值的子查询&#xff0c;这时子查询可以看作是一个在内存中临时存在的数据表…