linux下如何实现用脚本备份

来源:互联网 发布:中国数据广告投放 编辑:程序博客网 时间:2024/05/29 04:58

注意:

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的文件中,保存并给其执行的权限即可。