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