发布程序时候的CDN自动部署-shell

该程序的目的是找到SVN目录下的需要发布到CDN上的文件,图片类型文件直接发布,JS、CSS等文件经过YUI压缩工具压缩之后再发布到CDN上。

#该函数对CDN目录进行处理
DEAL_CDN() {
    cdnChangeLog=$fabuLog/changeLog.cdn
    apacheNeedYuiFileList=$fabuLog/apacheNeedYuiFileList.cdn
    cdnNeedYuiFileList=$fabuLog/cdnNeedYuiFileList.cdn
    if [ ! -d $cdnSrc ] || [ `ls -A $cdnSrc | wc -l` -eq 0 ]; then {
        IS_DIR $cdnSrc
        cd $webSrc
        find . -type f -name "*.js" -o -name "*.css" > $cdnChangeLog
        cd -
        excludefile=$fabuConf/exclude.cdn
    } else {
                #$webSrc为svn更新的包含图片、js、css等文件类型的目录
                cd $webSrc
                find . -type f -name "*.js" -o -name "*.css" | xargs stat -c '%n %Y' | sort -k1,1 > $apacheNeedYuiFileList
                #$cdnSrc为最后使用rsync命令发布到CDN上去的目录,该目录和在线CDN目录除了排除文件以外是一致的
                cd $cdnSrc
                find . -type f -name "*.js" -o -name "*.css" | xargs stat -c '%n %Y' | sort -k1,1 > $cdnNeedYuiFileList
                #处理修改,apacheNeedYuiFileList中时间戳大于cdnNeedYuiFileList时间戳的为需要处理修改的
                join $apacheNeedYuiFileList $cdnNeedYuiFileList | awk '{if($2>$3)print $1}' > $cdnChangeLog
                #处理增加,在apacheNeedYuiFileList中有的,但是在cdnNeedYuiFileList中没有的,为增加
                while read line;
                do
                        namename=$(echo $line | awk '{print $1}')
                        grep -q  $namename $cdnNeedYuiFileList
                        if [ $? != 0 ];then
                                echo $namename >> $cdnChangeLog
                        fi
                done < $apacheNeedYuiFileList
                #处理删除,在cdnNeedYuiFileList中有的,但是在apacheNeedYuiFileList中没有的,为删除
                cd $cdnSrc
                while read line;
                do
                        namename=$(echo $line | awk '{print $1}')
                        grep -q $namename $apacheNeedYuiFileList
                        if [ $? != 0 ];then
                                rm -f $namename
                        fi
                done < $cdnNeedYuiFileList
        excludefile=$fabuConf/exclude.cdn
    }
    fi

    #$excludefile中会排除掉js、css文件
    rsync -av --del --exclude-from="$excludefile" $webSrc/ $cdnSrc > $fabuLog/getOringal.cdn

    for file in `cat $cdnChangeLog`; do
        dir=`dirname $file`
        IS_DIR $cdnSrc/$dir

        #使用enca为需要压缩的文件确定文件编码,对于不确定的编码类型不压缩
        lang_result=$(/usr/local/bin/enca -L zh $webSrc/$file)
        echo "$lang_result" | grep -Eq 'UTF-8|ASCII' && charset=UTF-8
        echo "$lang_result" | grep -Eq 'GB2312' && charset=GB2312
        charset=${charset:-unknown}
        if [ "$charset" == "unknown" ];then
                rsync -av $webSrc/$file $cdnSrc/$file
                continue
        fi
        $JAVA_HOME/bin/java \
        -jar $YUI_HOME/yuicompressor-2.4.7.jar \
        $webSrc/$file -o $cdnSrc/$file \
        --charset $charset

        unset charset
    done
}


处理完成后,使用rsync命令可以将$cdnSrc推到在线CDN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值