2016-10-24 5 views
1

私は私のプロジェクトのためのコードのバックアップを取る必要がありますが、条件は次のとおりです。 -バックアップとして使用するファイルを別の指定された(パッチ)フォルダから読み込むPHPのコードのバックアップを取っていますか?

私はそれがメインプロジェクトフォルダ(パッチであるのと同じ方法で構成ファイルを持っているSVNを通じてパッチフォルダを生成しますメインプロジェクトよりもファイルが少ない)。私は、メインプロジェクトを読み込んで、パッチに含まれているファイルのみを取り出し、新しいバックアップフォルダに保存するコードを記述したいと思います。私が書いた

コード

は次のとおりです。 -

/*Patch Folder */ 
    $frmFoldr = 'patch_test/'; 
    $basepath = '/var/www/html/TestingBackupCron/'; 


    /*The Folder where files are to be backed up it would use basepath and toFoldr folder name. */ 
    $toFoldr = 'axisdirectcheck/'; 

    /* Read/Copy File from this folder. */ 
    $prodMainFolder = ''; 
    $prodBasePath = '/var/www/html/TestingBackupCron/sijucheckfiles/'; 


    $dir_iterator = new RecursiveDirectoryIterator($basepath . $frmFoldr); 
    $iterator = new RecursiveIteratorIterator($dir_iterator, RecursiveIteratorIterator::SELF_FIRST); 

foreach ($iterator as $file) { 
     $readDir = strstr($file->getPathname(), $frmFoldr); 
     $tofileminpath = str_replace($frmFoldr, "", $readDir); 

     $fromExPath = $prodBasePath . $tofileminpath; 
     $toExPath = $basepath . $toFoldr . $tofileminpath; 

     if (strpos($fromExPath, '.php') || strpos($fromExPath, '.js') || strpos($fromExPath, '.css')) { 
      if (file_exists($fromExPath)) { 
       copy($fromExPath, $toExPath); 
       print_r('Files copied to ' . $toExPath . ".\n"); 
      }else{ 
       print_r($fromExPath." ::: Read path not found.\n"); 
      } 
     } 
    } 

上記のコードは私にエラーを与えない「ストリームをオープンに失敗しました:そのようなファイルやディレクトリを」。私はコピーがフォルダを作成しないと思う。みんな助けてください。

+1

は少しは不要と思われます。 – jeroen

+0

メインプロジェクトファイルは600MB以上あります。私はバックアップが不要なので、それをすべて取っていたと感じました。 –

+0

私の主張は実際には、バージョンコントロールを使用するときに別の/非バージョン管理のバックアップを必要としないということでした.-) – jeroen

答えて

0

解決策が見つかりました。以下のコードではまずフォルダが作成され、次のループではコピーされたファイルがそれらのフォルダに書き込まれます。

public function run($args) { 
    /*Patch Folder */ 
    $frmFoldr = 'patch_test/'; 
    $basepath = '/var/www/html/TestingBackupCron/'; 

    /*The Folder where files are to be backed up it would use basepath and toFoldr folder name. */ 
    $toFoldr = 'axisdirectcheck/'; 

    /* Read/Copy File from this folder. */ 
    $prodMainFolder = ''; 
    $prodBasePath = '/var/www/html/TestingBackupCron/sijucheckfiles/'; 


    if (file_exists($basepath . $frmFoldr)) { 
     $dir_iterator = new RecursiveDirectoryIterator($basepath . $frmFoldr); 
     $iterator = new RecursiveIteratorIterator($dir_iterator, RecursiveIteratorIterator::SELF_FIRST); 
    } else{ 
     print_r("Read Directory '$basepath$frmFoldr' not Found. Please check the read directory filename.\n"); 
     exit; 
    } 
    $fromDir = array(); 

    $sendToArray = array(); 

    /* this foreach would create folders inside the path ($toFoldr) specified */ 
    foreach ($iterator as $file) { 
     $readDir = strstr($file->getPathname(), $frmFoldr); 
     $tofileminpath = str_replace($frmFoldr, "", $readDir); 

     $fromExPath = $basepath . $readDir; 
     $toExPath = $basepath . $toFoldr . $tofileminpath; 
     $sendToArray[] = $tofileminpath; 

     if (strpos($file, '/.')) { 
      if (!file_exists($toExPath)) { 
       $oldmask = umask(0); 
       mkdir("$toExPath", 0777, true); 
       umask($oldmask); 
      } 
     } 
    } 

    /* this foreach would copy files from PROD/UAT and paste inside the path($toExPath) specified */ 
    foreach ($sendToArray as $fPath) { 
     $fromExPath = $prodBasePath . $fPath; 
     $toExPath = $basepath . $toFoldr . $fPath; 

     if (strpos($fromExPath, '.php') || strpos($fromExPath, '.js') || strpos($fromExPath, '.css')) { 
      if (file_exists($fromExPath)) { 
       copy($fromExPath, $toExPath); 
       print_r('Files copied to ' . $toExPath . ".\n"); 
      }else{ 
       print_r($fromExPath." ::: Read path not found.\n"); 
      } 
     } 
    } 
} 

おかげ..あなたは、ソースコントロール内のすべてを持っている場合、部分的にバックアップを作成

関連する問題