代码改变世界

网站程序文件增量更新脚本

2018-01-22 14:57  ndzj  阅读(508)  评论(0编辑  收藏  举报

说明:

功能:原文件更新,新文件加入,此脚本暂时不支持新增目录加入

upload目录和web目录是同级的 他们下面的目录级别也是一样的,这点要注意

[root@tzp ~]# ls upload/images/main/
logo.png  qrcode.png

[root@tzp ~]# ls web/images/main/
footphone.png  loading1.gif  logo2.png  logo.png       qrcodedy.jpg  qrcodefw.jpg  qrcode.png   verify2.png  verifyicon.png
hxbanner.png   loading.gif   logo3.png  qrcodeapp.png  qrcodedy.png  qrcodefw.png  verify1.png  verify3.png  zhili.png

#!/bin/bash

upname=upload
ywjname=web #项目目录名
upload=/root/upload #更新项目文件目录
ywj=/root/web #项目地址
backup=/root/backup #项目备份存放目录
#sshpass -p "$password" ssh  -t hladmin@"$ipp"  "cd ~;/bin/sh "$project".sh shutdown"
#/data/tomcat-web/bin/shutdown.sh
#备份源文件
cp -r "$ywj" /root/backup/web_`date +%Y%m%d`
#过滤掉中文名称
china=$(ls -l -R "$upload"|grep -vE 'drw|upload|用量|^$'|awk -F' ' '{print $9}'|sed 's/[a-zA-Z0-9[:punct:]]//g' | grep -v '^$')
gl=`echo $china|sed 's# #|#g'`

for filename in `ls -l -R "$upload"|grep -vE 'drw|upload|用量|^$'|awk -F' ' '{print $9}'|grep -vE "$gl"|sort|uniq -c|awk -F' ' '{print $2}'|grep -v $(ls -l $upload|grep -v drw|awk '{print $9}'|grep -v ^$)`;do
#uploadurl=
double=$(find $upload -name "$filename"|wc -l)
doubley=$(find $ywj -name "$filename"|wc -l)

  if [ "$double" -gt 1 ];then
  echo 2
    for dfile in `seq $double`;do
      uploadurl=$(find $upload -name "$filename"|sed -n "$dfile"p)
      echo $uploadurl
      echo '==========2============'
      ywjurl=`find $ywj -name "$filename"|grep "$ywjname"'/'$(echo "$uploadurl"|sed -r 's#(/[^/]*){2}/(.*)/[^/]*$#\2#')'/'"$filename"`
      echo '#update'
      \cp -r  $uploadurl $ywjurl
      echo ' '
    done
 
   elif [ "$doubley" -eq 0 ];then
     echo $filename
     uploadurl=$(find $upload -name "$filename")
     echo $uploadurl
     echo '===============1========='
     #echo 新文件
     \cp -r $uploadurl  "$ywj"'/'"$(find $upload -name "$filename"|cut -d'/' -f4-)"
 
   elif [ "$double" -eq 1 ];then
     echo 1
     uploadurl=$(find $upload -name "$filename")
     echo $uploadurl
     echo '===============1========='
     #echo 源文件
      ywjurl=`find $ywj -name "$filename"|grep "$ywjname"'/'$(echo "$uploadurl"|sed -r 's#(/[^/]*){2}/(.*)/[^/]*$#\2#')'/'"$filename"`
      echo '#update'
      \cp -r  $uploadurl $ywjurl
     echo ' '
  fi
done
#/data/tomcat-web/bin/startup.sh

注:脚本要用在正式环境中要改几个地方

tomcat关闭和启动行,更新行把echo去掉

运行测试结果:

[root@tzp ~]# sh sinn.sh
1
/root/upload/images/newer/banner.png
===============1=========
#update
\cp -r  /root/upload/images/newer/banner.png /root/web/images/newer/banner.png
 
1
/root/upload/images/product/bar.png
===============1=========
#update
\cp -r  /root/upload/images/product/bar.png /root/web/images/product/bar.png
 
1
/root/upload/lib/My97DatePicker/calendar.js
===============1=========
#update
\cp -r  /root/upload/lib/My97DatePicker/calendar.js /root/web/lib/My97DatePicker/calendar.js
 
1
/root/upload/lib/My97DatePicker/lang/en.js
===============1=========
#update
\cp -r  /root/upload/lib/My97DatePicker/lang/en.js /root/web/lib/My97DatePicker/lang/en.js
 
1
/root/upload/images/newer/hz1.png
===============1=========
#update
\cp -r  /root/upload/images/newer/hz1.png /root/web/images/newer/hz1.png
 
1
/root/upload/lib/fullpage/jquery.fullPage.css
===============1=========
#update
\cp -r  /root/upload/lib/fullpage/jquery.fullPage.css /root/web/lib/fullpage/jquery.fullPage.css
 
1
/root/upload/lib/fullpage/jquery.fullPage.min.js
===============1=========
#update
\cp -r  /root/upload/lib/fullpage/jquery.fullPage.min.js /root/web/lib/fullpage/jquery.fullPage.min.js
 
1
/root/upload/lib/layer/mobile/need/layer.css
===============1=========
#update
\cp -r  /root/upload/lib/layer/mobile/need/layer.css /root/web/lib/layer/mobile/need/layer.css
 
2
/root/upload/lib/layer/layer.js
==========2============
#update
/root/web/lib/layer/layer.js
\cp -r  /root/upload/lib/layer/layer.js /root/web/lib/layer/layer.js
 
/root/upload/lib/layer/mobile/layer.js
==========2============
#update
/root/web/lib/layer/mobile/layer.js
\cp -r  /root/upload/lib/layer/mobile/layer.js /root/web/lib/layer/mobile/layer.js
 
1
/root/upload/images/main/logo.png
===============1=========
#update
\cp -r  /root/upload/images/main/logo.png /root/web/images/main/logo.png
 
1
/root/upload/images/product/product_detail_bg.png
===============1=========
#update
\cp -r  /root/upload/images/product/product_detail_bg.png /root/web/images/product/product_detail_bg.png
 
1
/root/upload/images/main/qrcode.png
===============1=========
#update
\cp -r  /root/upload/images/main/qrcode.png /root/web/images/main/qrcode.png
 
1
/root/upload/images/product/security_guarantee.png
===============1=========
#update
\cp -r  /root/upload/images/product/security_guarantee.png /root/web/images/product/security_guarantee.png

总结:

基本上能完成了增量更新,脚本是单线程,有待改进成多线程的!提高 更新速度。另外脚本对于新加的文件或者目录没有做到更新进去,有待改善。666加油。