注意:
1、以下脚本是perl脚本,执行的前提是你的机器(服务器装有perl)
2、daily.pl,weekly.pl是自己取的名字,可以根据自己意愿随意取,但是应保证其后缀是.pl即可。
一、全量备份
#!/usr/bin/perl -w
$svn_repos = "/usr/linux/xiu"; # 你的库的路径
$backups_dir = "/usr/backups"; # 你所要备份的位置的路径
# 获取系统时间(目的是给备份后文件名中添加日期以便于区分)
my($sec,$min,$hou,$day, $mon, $year) = localtime();
$mon++;$year+=1900;
my $datetime=sprintf("%04u%02u%02u", $year, $mon, $day);
$next_backup_file = "weekly_xiu"."$datetime"; # 备份后文件的名字。
$youngest = `svnlook youngest $svn_repos`;
chomp $youngest;
print "Backing up to revision $youngest/n";
$svnadmin_cmd = "svnadmin dump --revision 0:$youngest " . "$svn_repos > $backups_dir/$next_backup_file";
`$svnadmin_cmd`;
open(FILE, ">/usr/backups/LOG");
syswrite(FILE,"$youngest");
close(FILE);
将以上内容复制到名为weekly.pl的文件中,并给weekly.pl文件执行的权限就OK了。
二、增量备份
#!/usr/bin/perl -w
$svn_repos="/usr/linux/xiu"; #库的位置
$backup_dir="/usr/backups"; #要备份到的位置
my($sec,$min,$hou,$day, $mon, $year) = localtime();
$mon++;$year+=1900;
my $datetime=sprintf("%04u%02u%02u", $year, $mon, $day);
$next_backup_file = "daily_xiu"."$datetime"; # 备份的文件的名字
open(IN,"/usr/backups/LOG");
$previous_youngest = <IN>;
chomp $previous_youngest;
close(IN);
$youngest=`svnlook youngest $svn_repos`;
chomp $youngest;
if ($youngest eq $previous_youngest)
{
print "No new revisions to backup./n";
exit 0;
}
$first_rev = $previous_youngest + 1;
print "Backing up revisions $youngest ...n";
$svnadmin_cmd = "svnadmin dump --incremental --revision $first_rev:$youngest $svn_repos > $backup_dir/$next_backup_file";
`$svnadmin_cmd`;
open(FILE, ">/usr/backups/LOG");
syswrite(FILE,"$youngest");
close(FILE);
将以上内容复制到名为daily.pl的文件中,保存并给其执行的权限即可。