天天看點

提取ftp上傳檔案與伺服器檔案對比的更新

将winscp上傳的更新全部提取到輸出目錄,可以打包上傳的線上 

start.bat

提取ftp上傳檔案與伺服器檔案對比的更新

@echo off  

cd /d "f:\newproject\start"  

php -f "p.php"  

@pause  

 p.php

提取ftp上傳檔案與伺服器檔案對比的更新

<?php  

/** 

 * 工具檔案 

 * 目的在于遞歸比較兩個檔案夾 

 * @param string $dir1          路徑1,是标準,是有修改過的新項目 

 * @param string $dir2          路徑2,伺服器的檔案夾 

 * 

 */  

//輸出目錄  

$out_dir = '/data/webroot/outdir/';  

function createfolder($path) {  

    if (!file_exists($path)) {  

        createfolder(dirname($path));  

        mkdir($path, 0777);  

    }  

}  

function loopdir ($dir1, $dir2) {  

    $files = scandir($dir1);  

    foreach ($files as $key => $file) {  

        if ($file == '.' || $file == '..' || $file == '.svn') continue;  

        if (is_dir($dir1.'/'.$file)) {  

            loopdir($dir1.'/'.$file, $dir2.'/'.$file, $dir1.'/'.$file);  

        }  

        else {  

            if (!file_exists($dir2.'/'.$file)) {  

                if (!is_dir('/data/webroot/outdir'.$dir1)) {  

                    createfolder('/data/webroot/outdir'.$dir1);  

                }  

                copy($dir1.'/'.$file, '/data/webroot/outdir'.$dir1.'/'.$file);  

            }  

            else {  

                if((md5_file($dir1.'/'.$file) != md5_file($dir2.'/'.$file)) || (sha1_file($dir1.'/'.$file) != sha1_file($dir2.'/'.$file))) {  

                    if (!is_dir('/data/webroot/outdir'.$dir1)) {  

                        createfolder('/data/webroot/outdir'.$dir1);  

                    }  

                    copy($dir1.'/'.$file, '/data/webroot/outdir'.$dir1.'/'.$file);  

* 示例 

* 項目修改完後的檔案放入/data/webroot/basic目錄 

* 已經釋出的項目/data/webroot/www(dever,login) 

* 和參數1保持一緻 

**/  

loopdir('/data/webroot/basic', '/data/webroot/www');