需求比较简单,因为svn库比较小,才10多个g,每天定时备份一个全量的svn文件,上传到另外一个服务器上就可以了,
(按照周一到周五自动备份,然后ftp上传覆盖更新)
1、先创建一个svn.pl备份脚本,内容如下:
#!/usr/bin/perl -w
my $svn_repos="/var/svn/svnrepos";
my $backup_dir="/var/svn/svnrepos";
#my $time=$(date +%Y%m%d:%H:%M:%S);
#my $next_backup_file = "svn".$time;
#按照星期几当文件后缀,
#my $next_backup_file = "svnback.".`date +%Y%m%d`;
my $next_backup_file = "svnback.".`date +%u`;
#my $svnadmin_cmd="svnadmin dump --revision $youngest $svn_repos >$backup_dir/$next_backup_file";
#'$svnadmin_cmd';
my $svnadmin_cmd="svnadmin dump $svn_repos >$backup_dir/$next_backup_file";
`$svnadmin_cmd`;
open(LOG,">$backup_dir/last_backed_up"); #记录备份的版本号
print LOG $next_backup_file;
close LOG;
#如果想节约空间,则再执行下面的压缩脚本
#print "Compressing dump file.../n";
print `gzip -9 $backup_dir/$next_backup_file`;
2、 上传到 linux /usr/local/scripts/ 路径下
3、 设置定时调度
linux 下输入 crontab -e 命令,
设置 定时的时间和程序路径 */1 * * * * /usr/local/scripts/incr0_svn.sh (测试阶段,设置一分钟一调用,完事设置成1天一调用)
最后修改为周一和周五(2点)定时调度 * 2 * * 1,2,3,4,5 /usr/local/scripts/incr0_svn.sh
4、 生成 svnback.5文件在 /var/svn/svnrepos/ 目录下
备份完成的文件需要调用shell脚本上传到另外一个linux机器上备份
5、新建一个文件 ftp_svn.sh
内容如下
#! /bin/sh
ftp -i -n << !
open 10.210.33.37
user eteller eteller1234
cd /svnbackup/
lcd /var/svn/svnrepos/.
bin
put svnback.`date +%u`.gz
bye
!