shell备份发布的文件

待备份的文件路径:/gaps/test/20140417/gaps/sblib/…..,即需要发布的内容

生产的目录结构:/gaps/sblib/…..

备份时:发布的内容如果已经存在,则拷贝生产上相应的内容。发布的内容是新增的,生产上肯定没有。

#!/bin/bash

#待备份文件的根目录,该目录与备份脚本平级

sourcepath=""

copyroot=`pwd`

echo $copyroot

dateparam=`echo $1`

echo $dateparam

sourcepath=$copyroot"/"$dateparam

#文件备份的目标根目录

aimpath="/gaps/bak"

copyfolder()

{

  #列出文件夹下所有的文件

  name=`ls -l $1 | awk '{print $9}'`

  for i in $name

  do

    pathname=`echo $1"/"$i`

    if [ -d "$pathname" ];then

      copyfolder $pathname

    elif [ -f "$pathname" ];then

      echo "----------------------------"

      #根据目录获得文件,也可以使用basename命令

      filename=`echo ${pathname##*/}`

      #得到文件的路径,不包含文件本身,NF是一个内置变量

      comptemp=`echo "$pathname"|awk -F '/' '{for(k=5;k<=NF-1;k++) print $k}'`

      compfilepath=""

      for j in $comptemp

       do

         compfilepath=$compfilepath"/"$j

       done

      echo "file name is:"$filename

      echo "compfilepath is:"$compfilepath

      compfile=$compfilepath"/"$filename

      echo "____________________________"

      if [ ! -f "$compfile" ];then

        echo "file is not exist"

      else

        datev=`date +"%Y-%m-%d"`

        tamp=$aimpath"/"$datev

        tamp=$tamp$compfilepath

        mkdir -p $tamp

        cp $pathname $tamp

      fi

    else

      echo "error"

    fi

  done

}

copyfolder $sourcepath

你可能感兴趣的:(shell)