class.check_backup.php
来源:互联网 发布:当战脸型数据 编辑:程序博客网 时间:2024/06/11 05:06
class.check_backup.php
Introduction and Scope
This class will finished below functions:
1)Get all files' name from a file
2).Use the command diff to compare allfiles.
3).log all changed filenames
4).Use the command tar and gzip to backupall old files.
5)Use the command cp to copy all newfiles into backup directory
6)Send email to alert us which files arechanged.
Attributes
private $listfilename;
This file store all files’ name we wantto know wether have change.
private $backdir ;
This directory is used to backup newfiles..
private $logfilename;
This file is used to log the changedfiles’ name..
private $emailfilename;
This file store all emails’ address whichwe want to told them the changed files’ name.
Methods
publicfunction set_listfilename($listfilename);
Set theabsolute path of the list file.
publicfunction set_backdir($backdir);
Setthe absolute path of backup directory.
publicfunction set_logfilename($logfilename);
Set theabsolute path of the log file.
publicfunction set_emailfilename($emailfilename);
Set theabsolute path of the email list file.
public function check_and_backup()
Check all list files’ differ andlog the differs and backup new files and send email.
How to use
$ck_bk=newcheck_backup("/usr/local/www/apache22/CRON/Test_jevons");
$ck_bk->check_and_backup();
/*
This will general default configure base onthe directory of your inputing.
You must put the two files which are namedfile.list and email.list in your inputing directory.
$this->listfilename = $defaultdir."/file.list";
$this->backdir= $defaultdir."/backup";
$this->logfilename=$defaultdir."/backup.diff.log";
$this->emailfilename=$defaultdir."/email.list";
*/
file.list example
/usr/local/www/apache22/httpsdocs/inc_downloadhandler.php
/usr/local/www/apache22/httpsdocs/inc_downloadhandler_FT.php
/usr/local/www/apache22/httpdocs/about_us.php
/usr/local/www/apache22/httpdocs/index.php
email.list example
zeng@sina.com
jevons@5124d.com
/**
@author Jevons zeng <zzz_781111@sina.com>
@version 1.0
@Introduction and Scope
This class will finished below functions:
1)Get all files' name from a file
2).Use the command diff to compare all files.
3).log all changed filenames
4).Use the command tar and gzip to backup all old files.
5)Use the command cp to copy all new files into backup directory
6)Send email to alert us which files are changed.
@Attributes
private $listfilename;
This file store all files' name we want to know wether have change.
private $backdir ;
This directory is used to backup new files..
private $logfilename;
This file is used to log the changed files' name..
private $emailfilename;
This file store all emails' address which we want to told them the changed files' name.
@Methods
public function set_listfilename($listfilename);
Set the absolute path of the list file.
public function set_backdir($backdir);
Set the absolute path of backup directory.
public function set_logfilename($logfilename);
Set the absolute path of the log file.
public function set_emailfilename($emailfilename);
Set the absolute path of the email list file.
public function check_and_backup()
Check all list files' differ and log the differs and backup new files and send email.
@file.list example
/usr/local/www/apache22/httpsdocs/inc_downloadhandler.php
/usr/local/www/apache22/httpsdocs/inc_downloadhandler_FT.php
/usr/local/www/apache22/httpdocs/about_us.php
/usr/local/www/apache22/httpdocs/index.php
@email.list example
zeng@sina.com
jevons@5124d.com
@example
$ck_bk=new check_backup("/usr/local/www/apache22/CRON/Test_jevons");
$ck_bk->check_and_backup();
//This will general default configure of file.list and email.list and backup direcotry and log file base on the directory of your inputing.
//You must put the two files which are named file.list and email.list in your inputing directory.
**/
class check_backup
{
private $listfilename;
private $backdir ;
private $logfilename;
private $emailfilename;
public function __construct($defaultdir){
$this->listfilename = $defaultdir."/file.list";
$this->backdir = $defaultdir."/backup";
$this->logfilename =$defaultdir."/backup.diff.log";
$this->emailfilename =$defaultdir."/email.list";
echo $this->listfilename."/n";
echo $this->backdir."/n";
echo $this->logfilename."/n";
echo $this->emailfilename."/n";
}
public function set_listfilename($listfilename)
{
$this->listfilename=$listfilename;
}
public function set_backdir($backdir)
{
$this->backdir=$backdir;
}
public function set_logfilename($logfilename)
{
$this->logfilename=$logfilename;
}
public function set_emailfilename($emailfilename)
{
$this->emailfilename=$emailfilename;
}
private function get_backup_filename($srcfilename)
{ return str_replace("/","_",$srcfilename);
}
private function get_filepath($data){
$preg = '/(.*)///si';
$match=array();
preg_match_all($preg, $data, $match);
$nlast = count($match[1])-1;
if($nlast>=0)
{
$ret = trim($match[1][$nlast]);
return $ret;
}
else return "";
}
private function get_filename($data){
$preg = '///([^//]*)$/si';
$match=array();
preg_match_all($preg, $data, $match);
$nlast = count($match[1])-1;
if($nlast>=0)
{
$ret = trim($match[1][$nlast]);
return $ret;
}
else return "";
}
private function check_diff()
{
//check list file exist
if(!file_exists($this->listfilename))
{
echo "The file $this->listfilename is not exist./n";
return "";
}
$file_list = file($this->listfilename);
$total = sizeof ($file_list);
$ret_list="";
for($i=0;$i<$total;$i++)
{
$ffull=trim($file_list[$i]);
$exfname=$this->get_backup_filename($ffull);
$cmpfile = $this->backdir."/".$exfname;
//echo $cmpfile."/n";
if(!file_exists($cmpfile)) continue;
//check diff
$cmdstring ="diff ".$ffull." ".$cmpfile;
echo $cmdstring."/n";
$retstring= `$cmdstring`;
$ret=strlen($retstring);
if($ret>0) $ret_list.=$ffull."/r/n";
}
return $ret_list;
}
private function tar_gz_old()
{
if(!file_exists($this->backdir))
{
$cmdline="mkdir $this->backdir";
`$cmdline`;
}
$today=date("Y_m_d");
$targzpath=$this->get_filepath($this->backdir);
$targzfolder=$this->get_filename($this->backdir);
$targzname=$targzpath."/".$today.".tar.gz";
$cmdline="cd $targzpath;tar zcvf $targzname $targzfolder";
echo $cmdline."/n";
`$cmdline`;
}
private function backup_new()
{
//check list file exist
if(!file_exists($this->listfilename))
{
echo "The file $this->listfilename is not exist./n";
return;
}
$file_list = file($this->listfilename);
$total = sizeof ($file_list);
for($i=0;$i<$total;$i++)
{
$ffull=trim($file_list[$i]);
// $fname = $this->get_filename( $ffull);
$exfname= $this->get_backup_filename( $ffull);
$backname = $this->backdir."/".$exfname;
$cmdline="cp -rf $ffull $backname";
echo $cmdline."/n";
`$cmdline`;
}
}
private function send_email($ret_list)
{
echo $ret_list;
if(strlen($ret_list)>0)
{//send all email
// mail('jrubenstein@filetransfer.com.cn','File change list',$ret_list);
if(file_exists($this->emailfilename))
{
$emial_list = file("$this->emailfilename");
$total = sizeof ($emial_list);
for($i=0;$i<$total;$i++)
{
echo $emial_list[$i]."/n";
mail($emial_list[$i],'File change list',$ret_list);
}
}
}
}
function log_error_msg($err)
{
error_log("/n$err", 3, $this->logfilename);
}
public function check_and_backup()
{
echo "Check the diff of the file list/n";
$ret_list=$this->check_diff();
//Log the result to log file
echo "Log the result to log file/n";
if(strlen($ret_list)>0)
{
//echo $ret_list;
$this->log_error_msg($ret_list);
}
//Tar and gzip old backup dir and remove all old list file
echo "Tar and gzip old backup dir and remove all old list file/n";
$this->tar_gz_old();
//New backup all list file
echo "New backup all list file/n ";
$this->backup_new();
//Send email
echo "Send all email /n";
$this->send_email($ret_list);
}
}
//$ck_bk=new check_backup("/usr/local/www/apache22/CRON/Test_jevons");
//$ck_bk->check_and_backup();
?>
- class.check_backup.php
- php class
- php class
- PHP class
- class.php
- PHP class
- PHP类(Class)入门教程
- php ftp class
- php excel class
- smtp.class.php
- PHP ZIP Class
- template.class.php
- php log class
- PHP Log Class
- php 基础笔记 - class
- action.class.php
- mysql.class.php
- PHP类(Class)入门教程
- 使用NVelocity实现服务器端页面自动生成
- 您应该知道的十种 XML 模式
- enum
- scriptCenter微软脚本帮助中心
- 解除数据库表某列上的约束
- class.check_backup.php
- Linux下动态库使用小结
- 一个大牛些的Python资源
- 学习 10 种良好的 XML 使用习惯
- Python 一些函数介绍
- 轻松实现页面提交时,显示“提交中..”
- iframe 获得父页对象
- DOS延时实现
- Gv在编辑的时候如何控制TextBox的大小