应用背景:

公司一台阿里云服务器,上面既搭建测试环境,也有正式环境,现需要将测试环境测试好的程序无差异同步到正式环境中

此处本来可以用cp搞定的,老板说怕哪一天我不在公司其他人不会,所以让写个脚本,还有就是出于责任问题,同步的时候要产生同步日志。


#!/bin/sh

. /etc/init.d/functions


update=`date`

STTY_RESTORE=$(stty -g)


while true

do

echo -n "username:"

read username

echo -n "password:"


stty -echo cbreak


while true

do

        character=$(dd if=/dev/tty bs=1 count=1 2>/dev/null)


        case $character in

        $(echo -e "\n"))

                break

                ;;

        $(echo -e "\b"))

                if [ -n "password" ];then

                        echo -n -e "\b \b"

                        password=$(echo "$password"|sed 's/:$//g')

                fi

                ;;

        *)

                password=$password$character

                echo -n '*'

                ;;

        esac

done


stty $STTY_RESTORE

if [ "$username" == "woniu" ] && [ "$password" == "woniu" ]

        then

        /bin/rm -rf /web/html/app.ori

        /bin/cp -af /web/html/app /web/html/app.ori

       /usr/bin/rsync -az --delete --password-file=/etc/rsyncmima.password /web/svn/php/php/ rsync_backup@127.0.0.1::woniu

        echo "$username update the directory at $update" >> /var/log/updatewww.log

        echo -e "\n请稍等"

        echo -e "copying..............."

        sleep 3

        /usr/bin/diff /web/svn/php/php /web/html/app >/dev/null 2>&1

        if [ `echo $?` == 0 ];then

                action "copy directory" /bin/true

        else

                action "copy directory" /bin/false

        fi

                exit 0

else

        echo -e "\n用户名或密码错误,请重新输入!"

fi


done