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

@echo off
cd /d "f:\newproject\start"
php -f "p.php"
@pause
p.php

<?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');