您的位置:首页 > 数据库

用perl写的postgre数据库备份程序(摘录,没有注解)

2008-09-01 12:33 225 查看
#!/usr/bin/perl

#文件名:dbback.pl
mon,$day) = fdate(time());
my $deleteFilePattern = "customer_jfc".$year.$mon.$day;
print "$deleteFilePattern/n";
my @dbBackupFile = getPatternFile("customer_jfc".$year,"/usr/local/postgres/bin/dbbackup");
my $fileNO = 0;
my $fileNum = @dbBackupFile;
if(@dbBackupFile > 0){
my $lastDBbackupFile = $dbBackupFile[$#dbBackupFile];
if($lastDBbackupFile =~ /$deleteFilePattern/){
print $lastDBbackupFile."/n";
my @arrayLastDBbackupFileNO = split(/_/,$lastDBbackupFile);
my $lastDBbackupFileNO = $arrayLastDBbackupFileNO[2];
$fileNO = $lastDBbackupFileNO + 1;
}else{
$fileNO = 1;
}
}else{
$fileNO = 1;
}
my $fileName = "/usr/local/postgres/bin/dbbackup/customer_jfc".$year.$mon.$day."_".$fileNO;
my $cmd = "/usr/local/postgres/bin/pg_dump customer_jfc > ".$fileName;
my $rmcmd = "rm -f ".$fileName;
#system($rmcmd);
system($cmd);
#delPastFile($deleteFilePattern,"/usr/local/postgres/bin/dbbackup/",@dbBackupFile);
foreach(@dbBackupFile){
my $delPastFile = "/usr/local/postgres/bin/dbbackup/".$_;
rmOldFile($delPastFile);
}
sub fdate {
my @date = localtime($_[0]);
my $year = 1900+$date[5];
my $mon = sprintf("%02d",(1+$date[4]));
my $day = sprintf("%02d",($date[3]));
my $hour = sprintf("%02d",($date[2]));
my $minute = sprintf("%02d",($date[1]));
my $sec = sprintf("%02d",($date[0]));
return ($year, $mon, $day, $hour, $minute, $sec);
}
sub getPatternFile{
my ($pattern,$filePath)=@_;
my @files=();
opendir(TEMP,$filePath);
@files=grep(/^$pattern/,readdir TEMP);
closedir(TEMP);
return sort(@files);
}
sub delPastFile{
my($pattern,$filePath,@fileName)=@_;
my @arrayNewFile = ();
foreach(@fileName){
if($_ !~ /$pattern/){
my $file = $filePath.$_;
unlink $file;
}else{
push(@arrayNewFile,$_);
}
}
return @arrayNewFile;
}
sub rmOldFile{
my ($fileName)=@_;
if((-e $fileName) && (-s $fileName)){
my @arrayFileStats = stat($fileName);
my $fileTime=@arrayFileStats[9];

#24*3600*7 :代表7天是一个周期
$timeInterval=((int(time()/3600))*3600)-((int($fileTime/3600))*3600);
if($timeInterval>=24*3600*7){
unlink $fileName;
}
@arrayFileStats=();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐