一个差分备份用的小脚本

| 暂无评论 | 暂无引用通告

-->

  什么是差分备份请参见备份技术及基本分类 

  本来想用于远程差分备份用的,可是搞不明白为什么服务器上的tar(Tape ARchive)不认-N选项而且fc5上的tar也不认,而我的fc6上的tar可以认,于是就简单的改一改用于本地备份了!

  此脚本需要给定配置文件,配置文件的格式如下:

backup_dir=/home
cmp_time=2007-6-31 14:38
path=/root
project_dir=study
project_name=study

待备份的目录为/root/study 备份文件存放目录为/home差分备份的比较时间为 2007-6-31 14:38

在crontab中添加(backup.pl为脚本名,backup.conf为配置文件)

1 23 * * 1-5 /root/bin/backup.pl /etc/backup.conf 

星期一到星期四执行差分备份,星期五执行一次全备份,并更改备份比较时间。

脚本内容如下:

#!/usr/bin/perl -w
use strict;

#读取配置文件
my $conf_file=shift;

print "文件$conf_file不存在!\n" unless $conf_file;

#定义关联数据%conf
#关键字有:project_name path project_dir backup_dir cmp_time
my %conf;
open CONF,$conf_file or die "打开文件失败\n";
while(<CONF>){
        my $util=$_;
        chomp $util;
        $util =~ m/(.*)=(.*)/;
        $conf{$1}=$2;
}
close CONF;

#获取当前时间
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime;
$year+=1900;


#定义存档文件名
my $archive_name=$conf{project_name}.$year."-".$mon."-".$mday."-".$hour.$min.".tgz";
my $log_date=$year."-".$mon."-".$mday." ".$hour.":".$min;

#开始备份
chdir $conf{path};
if(!($mday eq 5)){
#全备份
        `tar zcvf $archive_name $conf{project_dir} `;
        `mv $archive_name $conf{backup_dir}`;
        open NEWCONF,'>',$conf_file;
        $conf{cmp_time}=$log_date;
        foreach (sort keys %conf){
                print NEWCONF "$_=$conf{$_}\n";
        }
        close NEWCONF;
        #print "world\n";
}else{
#差分备份
        `tar zcvf $archive_name $conf{project_dir} -N "$conf{cmp_time}"`;
        `mv $archive_name $conf{backup_dir}`;
        #print "hello\n";
}

__DATA__
配置文件内容

project_name=
path=
project_dir=
cmp_time=
backup_dir=
 

____________________________________________

以后有时间了再继读更改!

常用备份工具有tar  cpio  pax  dump/restore之前转贴了一篇dump/restore的用法:dump和restore,可是我还是没有搞明白怎么用,还得继续学习。

用tar进行差分备份时,只需用-N指定差分备份的比较时间就行, 在备份时tar将保持原目录结构,此处的差分备份对删除的文件无效,即使已删除了某些文件,备份中的文件仍会被保留,使用dump进行备份是也会有同样的问题。

网络备份系统可以参看  amanda

暂无引用通告

发送引用通告网址: http://supersun.info/mt/mt-tb.cgi/665
如果您想引用这篇日记到您的Blog,请复制上面的链接,放置到您发表文章时的相应界面中。

发表评论

最新资源

  • IMG_1437.JPG
  • line.png
  • bar.png
  • perl_calander.jpg

关于此日记

此日记由 supersun 发表于 2007年7月31日 14:42

此Blog上的上一篇日记dump和restore

此Blog上的下一篇日记检查内网mac与ip变更的脚本

首页归档页可以看到最新的日记和所有日记。