PHP 備份程式

//備份要放哪裡?
$backup_path = "/home";
//要備份誰
$target_path = "/backup/home";

//$local_backup = 0;

//備份目錄名稱
$dir = date("Y-m-d");

//保留n個月分
$keep_nas_month = 2;
$effectiveDate = date("Y-m-d");

$target_path_dir = $target_path."/".$dir;
$backup_path_dir = $backup_path."/".$dir;

    /*
    if (!file_exists($target_path_dir) )
    {
        mkdir($target_path_dir);
    }
    */

    if (!file_exists($backup_path_dir) )
    {
        mkdir($backup_path_dir);
    }

    $get_dir_list = dirToArray($backup_path);
    foreach ($get_dir_list as $key=>$val)
    {
        $p = $backup_path."/".$val;
        if (file_exists($p))
        {
            $read_backup_list[] = $val;
        }
    }
    //print_r($read_backup_list);

 $keep_Date_min = date('Y-m-d', strtotime("-".$keep_nas_month." months", strtotime($effectiveDate)));
 $exclude_list = array("app");

  if (count($read_backup_list) > 0)
  {
     //先判斷刪除之前的備份
     foreach ($read_backup_list as $key=>$val)
     {
         //print_r($val);
        if ( $val < $keep_Date_min )
        {
            $del_dir = $backup_path."/".$val;
            if (file_exists($del_dir))
            {
                echo $cmd = 'rm -fr '.$del_dir;
                echo "\r\n";
                exec($cmd);
            }
            
        }
        
     }
  }

    //刪除後 開始進入備份
    $get_dir_list = dirToArray($target_path);
    //print_r($get_dir_list);
    //die();
    foreach ($get_dir_list as $key=>$val)
    {
    
        $check = $target_path."/".$val;
        if ( is_dir($check) )
        {
            $backup_dir = $backup_path."/".$val;
            $compression_file = $val.".gz.tar";
            //echo "\r\n";
            echo $cmd = "cd ".$target_path.";tar -cvzf ".$compression_file." ".$val;
            echo "\n";
            exec($cmd);
            
            
            echo $cmd = "mv ".$target_path."/".$compression_file." ".$backup_path_dir ;
            echo "\n";
            exec($cmd);
        }
        
    }

/*
foreach ($nas_backup_files_list as $key=>$val)
{
    if ($val < $keep_Date_min )    
    {
        //echo "\n";
        //echo $val;
        //echo "\n";
        echo $nas_dir = $nas_backup_path."/".$val;
        echo $cmd = 'rm -fr '.$nas_dir;
        echo "\r\n";
        //exec($cmd);
        
    }
}
*/

/*
    

foreach ($read_backup_list as $key=>$val)
{
    
    //print_r($val);
    
    $source = explode("_",$val);
    
    $acc = $source[0];
    $home_web = $source[1];
    $process_path = "";
    $process_path = "/home/".$acc."/web";
    //echo "<br>";
    $file_name = $val.".gz.tar";
    
    echo "\n";
    echo $cmd = "cd ".$process_path.";tar -cvzf "."/home/backup/".$dir."/".$file_name." ".$home_web;
    echo "\n";
    exec($cmd);
    
    
    echo $cmd = "rsync -avz –progress "."/home/backup/ "." "."/nas_backup/home/";
    echo "\n";
    exec($cmd);
    
}
*/    
    /*
    echo $cmd = "rm -fr /home/backup/*";
    echo "\n";
    exec($cmd);
    */

    function dirToArray($dir) { 
       
       $result = array(); 
    
       $cdir = scandir($dir); 
       foreach ($cdir as $key => $value) 
       { 
          if (!in_array($value,array(".",".."))) 
          { 
                $result[] = $value; 
          } 
       } 
       
       return $result; 
    }