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