your_website是网站根目录,publishlin与网站根目录同一级目录,用于存放需要发布的php程序(带目录全路径)
publish.sh脚本
#!/bin/sh
suffix=`date +%Y%m%d`
function listdir() {
local current_dir base_dir targetfile targetdir
base_dir=$1
cd ${base_dir}
current_dir=$(pwd)
for dirlist in $(ls ${current_dir})
do
targetdir=`echo ${current_dir} | sed 's/publishlin/your_website/g'`
if [ ! -d ${targetdir} ]; then
mkdir ${targetdir}
fi
if [ -d ${dirlist} ]; then
cd ${dirlist}
listdir ${current_dir}/${dirlist}
cd ..
else
targetfile=`echo ${current_dir}/${dirlist} | sed 's/publishlin/your_website/g'`
if [ -f ${targetfile} ]; then
mv ${targetfile} ${targetfile}${suffix}
fi
cp ${current_dir}/${dirlist} ${targetfile}
fi
done
}
if [ -z $1 ]; then
echo "please input publish directory."
echo "e.g. ./publish.sh /var/www/html/publishlin"
exit 1
fi
if [ -d $1 ];
then
listdir $1
elif [ -f $1 ];
then
echo "please input a directory"
exit 1
else
echo "please input a exist directory"
exit 1
fi
执行 ./publish.sh /var/www/html/publishlin 完成发布
rollback.sh脚本
#!/bin/sh
suffix=$2
function listdir() {
local current_dir base_dir targetfile targetdir
base_dir=$1
cd ${base_dir}
current_dir=$(pwd)
for dirlist in $(ls ${current_dir})
do
if [ -d ${dirlist} ]; then
cd ${dirlist}
listdir ${current_dir}/${dirlist}
cd ..
else
targetfile=`echo ${current_dir}/${dirlist} | sed 's/publishlin/your_website/g'`
if [ -f ${targetfile}${suffix} ]; then
rm -f ${targetfile}
mv ${targetfile}${suffix} ${targetfile}
else
rm -f ${targetfile}
fi
fi
done
}
if [ -z $1 -o -z $2 ]; then
echo "please input publish directory and rollback version."
echo "e.g. ./rollback.sh /var/www/html/publishlin 20140124"
exit 1
fi
if [ -d $1 ];
then
listdir $1
elif [ -f $1 ];
then
echo "please input a directory"
exit 1
else
echo "please input a exist directory"
exit 1
fi