Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要备份PHP中的代码,其中要作为备份的文件是从另一个指定(补丁)文件夹读取的。?_Php_Ubuntu_Yii_Cron_Backup - Fatal编程技术网

要备份PHP中的代码,其中要作为备份的文件是从另一个指定(补丁)文件夹读取的。?

要备份PHP中的代码,其中要作为备份的文件是从另一个指定(补丁)文件夹读取的。?,php,ubuntu,yii,cron,backup,Php,Ubuntu,Yii,Cron,Backup,我需要为我的项目备份代码,但条件是:- 我通过SVN生成了一个补丁文件夹,它的文件结构与主项目文件夹中的文件结构相同(补丁的文件比主项目的文件少)。我想写一个代码,读取主项目,只选择补丁中存在的那些文件,并将其保存在一个新的备份文件夹中 我写的代码是:- /*Patch Folder */ $frmFoldr = 'patch_test/'; $basepath = '/var/www/html/TestingBackupCron/'; /*The Fol

我需要为我的项目备份代码,但条件是:-

我通过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");
            }
        }
    }

上面的代码给出了错误“无法打开流:没有这样的文件或目录”。我认为复制不会创建文件夹。请帮助大家。

找到了解决方案。下面的代码将首先创建文件夹,然后在下一个循环中将复制的文件写入这些文件夹

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");
            }
        }
    }
}

谢谢。

找到了解决方案。下面的代码将首先创建文件夹,然后在下一个循环中将复制的文件写入这些文件夹

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");
            }
        }
    }
}

谢谢..

当您拥有源代码管理中的所有内容时,进行部分备份似乎有点不必要。我们有600+MB的主项目文件。我觉得把所有这些都当作备份是不必要的。我的观点是,当你使用版本控制时,你根本不需要一个单独的/非版本控制备份:-)当你拥有所有源代码控制时进行部分备份似乎有点不必要。我们有600+MB的主项目文件。我觉得把所有这些都当作备份是不必要的。我的观点是,当您使用版本控制时,实际上根本不需要单独的/非版本控制备份:-)