待备份的文件路径:/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