#前些天为其他项目部写的更新脚本,更新文件并md5校验。
#md5校验文件是同事在PC机上使用md5summer生成的。
md5文件参考样式
{
# MD5 checksums generated by MD5summer ()
# Generated 2011-6-15 18:09:48
18c995467732c37fe91496729057bd0d *dic.unicode
}
脚本如下:
#!/bin/sh
#更新文件位置
update_conf="/home/getamped/gaserver/update/conf"
update_shopdata="/home/getamped/gaserver/update/shopdata"
#目标文件位置
prod_conf="/home/getamped/gaserver/conf"
prod_shopdata="/home/getamped/gaserver/shopdata"
#备份文件名后缀
Date=`date +%m%d`
#更新conf文件夹内的文件
update_conf()
{
if [ ! -d $update_conf ];then
echo "conf
update path $update_conf does not exist"
exit
fi
if [ ! -d $prod_conf ];then
echo "conf
prod path $prod_conf does not exist"
exit
fi
# MD5校验码
if [ ! -f "$update_conf/conf.md5" ] ;then
echo
"$update_conf/conf.md5 does not exist"
exit
else
cd "$update_conf/" && dos2unix
conf.md5
#提取文件名
update_file=`cat "$update_conf/conf.md5"|grep -v "#"|cut -d"*"
-f2`
for file in
$update_file;do
#提取MD5码
file_md5=`cat "$update_conf/conf.md5"|grep
"$file\>"|cut -d"*" -f1|cut -d" " -f1`
#将被更新文件改名(将后缀名改为日期)
mv "$prod_conf/$file" "$prod_conf/$file-$Date"
2>/dev/null
cp "$update_conf/$file" "$prod_conf/"
if [ -f "$prod_conf/$file" ];then
prod_md5=`md5sum "$prod_conf/$file"|cut -d" " -f1`
if [ "$prod_md5" != "$file_md5" ];then
echo "Error:$prod_conf/$file md5 ($prod_md5) check not
match!"
else
echo "Info:$prod_conf/$file md5 ($prod_md5) update complete"
fi
else
echo "Error:$prod_conf/$file update failed!"
fi
done
fi
}
#更新shopdata文件夹内的文件
update_shopdata()
{
if [ ! -d $update_shopdata ];then
echo
"shopdata update path $update_shopdata does not exist"
exit
fi
if [ ! -d $prod_shopdata ];then
echo
"shopdata prod path $prod_shopdata does not exist"
exit
fi
if [ ! -f "$update_shopdata/shopdata.md5" ] ;then
echo
"$update_shopdata/shopdata.md5 does not exist"
exit
else
cd
"$update_shopdata/"&&dos2unix
shopdata.md5
update_file=`cat "$update_shopdata/shopdata.md5"|grep -v "#"|cut
-d"*" -f2`
for file in
$update_file;do
file_md5=`cat "$update_shopdata/shopdata.md5"|grep
"$file\>"|cut -d"*" -f1|cut -d" " -f1`
mv "$prod_shopdata/$file" "$prod_shopdata/$file-$Date"
2>/dev/null
cp "$update_shopdata/$file" "$prod_shopdata/"
if [ -f "$prod_shopdata/$file" ];then
prod_md5=`md5sum "$prod_shopdata/$file"|cut -d" " -f1`
if [ "$prod_md5" != "$file_md5" ];then
echo "Error:$prod_shopdata/$file md5 ($prod_md5) check not
match!"
else
echo "Info:$prod_shopdata/$file md5 ($prod_md5) update
complete"
fi
else
echo "Error:$prod_shopdata/$file update failed!"
fi
done
fi
}
case $1 in
conf)
update_conf;;
shopdata)
update_shopdata;;
all)
update_conf
update_shopdata;;
*)
echo
"Usage:only input conf shopdata or all!"
exit;;
esac
echo Complete