rm -rf /usr/bin/svnadmin
rm -rf /usr/sbin/svnadmin
rm -rf /usr/bin/svnlook
rm -rf /usr/sbin/svnlook
ln -s /usr/local/svn/bin/svnadmin /usr/bin/svnadmin
ln -s /usr/local/svn/bin/svnadmin /usr/sbin/svnadmin
ln -s /usr/local/svn/bin/svnlook /usr/bin/svnlook
ln -s /usr/local/svn/bin/svnlook /usr/sbin/svnlook
svnadmin svnlook 需要写入 /usr/bin 直接调用
svnbak.sh
- - - - - 源程序
#!/bin/ksh
PROJECT_PATH=/svn-bak
INDEX_FILE=index.txt
BEGIN=`cat $INDEX_FILE`
ENDNO=`svnlook youngest $PROJECT_PATH`
FILENAME=svn-bak_$BEGIN-$ENDNO.dmp
svnadmin dump $PROJECT_PATH -r $BEGIN:$ENDNO --incremental >$FILENAME
gzip $FILENAME
#NUMNO=`echo "$NUMNO + 1"|bc`
ENDNO=`expr $ENDNO + 1`
echo $ENDNO > $INDEX_FILE
- - - - - 真实环境的
#!/bin/ksh
PROJECT_PATH=/home/svn
INDEX_FILE=/home/svnbak/index.txt
BEGIN=`cat $INDEX_FILE`
ENDNO=`svnlook youngest $PROJECT_PATH`
FILENAME=svn-bak_$BEGIN-$ENDNO.dmp
svnadmin dump $PROJECT_PATH -r $BEGIN:$ENDNO --incremental >/home/svnbak/$FILENAME
gzip /home/svnbak/$FILENAME
# tar zcf tar.gz mei you gzip hao
# gzip -d *.gz he gzip yasuo he jieya
#NUMNO=`echo "$NUMNO + 1"|bc`
ENDNO=`expr $ENDNO + 1`
echo $ENDNO > $INDEX_FILE
- - - - -
chmod o+x svnbak.sh
出现的问题解决
./svnbak.sh
svnadmin: Try 'svnadmin help' for more info
svnadmin: Revisions must not be greater than the youngest revision (7)
修改 index.txt 里的版本号为 1 然后重新执行 将从版本1开始做备份
- - - - -
备份 : 每天都做增量备份
./svnbak.sh
恢复 : 将这些备份 一个一个的导入SVN库里
gzip -d svn-bak_1-8.dmp.gz
gzip -d svn-bak_9-9.dmp.gz
svnadmin load /home/svn3 < svn-bak_1-8.dmp
svnadmin load /home/svn3 < svn-bak_9-9.dmp
等 ...
通过测试
[root@vm193 svnbak]# ls
index.txt svnbak.sh
[root@vm193 svnbak]# echo 0 > index.txt
[root@vm193 svnbak]# ./svnbak.sh
* Dumped revision 0.
* Dumped revision 1.
* Dumped revision 2.
* Dumped revision 3.
* Dumped revision 4.
* Dumped revision 5.
* Dumped revision 6.
* Dumped revision 7.
* Dumped revision 8.
* Dumped revision 9.
[root@vm193 svnbak]# ./svnbak.sh
* Dumped revision 10.
[root@vm193 svnbak]# ls
index.txt svnbak.sh svn-bak_0-9.dmp.gz svn-bak_10-10.dmp.gz
[root@vm193 svnbak]# ll
total 24
-rw-r--r-- 1 root root 3 May 12 06:05 index.txt
-rwxrwxrwx 1 root root 364 May 12 05:57 svnbak.sh
-rw-r--r-- 1 root root 745 May 12 06:05 svn-bak_0-9.dmp.gz
-rw-r--r-- 1 root root 386 May 12 06:05 svn-bak_10-10.dmp.gz
[root@vm193 svnbak]# gzip -d svn-bak_1-8.dmp.gz
[root@vm193 svnbak]# gzip -d svn-bak_9-9.dmp.gz
[root@vm193 svnbak]# svnadmin load /home/svn3 < svn-bak_0-9.dmp
[root@vm193 svnbak]# svnadmin load /home/svn3 < svn-bak_10-10.dmp
gzip 参数信息
-c,--stdout 将解压缩的内容输出到标准输出,原文件保持不变
-d,--decompress 解压缩
-f,--force 强制覆盖旧文件
-l,--list 列出压缩包内储存的原始文件的信息(如,解压后的名字、压缩率等)
-n,--no-name 压缩时不保存原始文件的文件名和时间戳,解压缩时不恢复原始文件的文件名和时间戳(此时,解出来的文件,其文件名为压缩包的文件名)
-N,--name 压缩时保存原始文件的文件名和时间戳,解压缩时恢复原始文件的文件名和时间戳
-q,--quiet 抑制所有警告信息
-r,--recursive 递归
-t,--test 测试压缩文件完整性
-v,--verbose 冗余模式(即显示每一步的执行内容)
-1、-2、...、-9 压缩率依次增大,速度依次减慢,默认为-6
计划任务
1. 保证 crond 进程是开启的 ps -aux | grep cond
2. 写入计划任务
crontab -e
i0 9 * * * sh /home/svnbak/svnbak.sh
每天 09:00 执行 备份脚本