shell生成rsync同步腳本

testphp

#!/bin/bash
#
# Rsync Install Script
# Last Updated 2018.02.02
# 
##### modify by Jinayf 2018.02.02 #####

######手動修改如下內容######

#測試腳本名稱
test_name='obs_test111.sh'
#測試分支名稱,以空格隔開
branch_name=(test1 test2 test3 test4)
#本地目錄,以空格隔開
local_dir=(/wos/test1/portal111/ /wos/test1/portal222/ /wos/test1/portal333/ /wos/test1/portal444/)
#代碼發佈目錄
web_dir='/data/www/vhosts/wos-obs.wondershare.cn/httpdocs/'
#發佈服務器IP,以空格隔開
server_ip=(10.10.18.149 10.10.18.149 10.10.18.130 10.10.18.130)
#腳本存放地址
script_dir='/data/wos/rsync/obs'
#過濾不一樣步內容,以空格隔開
exclude_txt=(/.git/ /runtime/ .env web/index.php config/main.php)
#口令文本
rsync_scrt='/usr/local/rsync/rsync.scrt'

######手動修改內容結束######

echo "========================================"
echo "Generating Rsync script"

#檢測腳本是否已經存在,存在則退出
if [[ -f "$script_dir/$test_name" ]];then
        echo "$script_dir/$test_name is exists!"
        exit
fi

#檢測本地目錄是否存在,不存在則建立
for d in ${local_dir[@]}
do
    if [[ ! -d $d ]];then
        mkdir -p $d
    fi
done

#檢測腳本存放目錄是否存在,不存在則建立
if [[ ! -d $script_dir ]];then
    mkdir -p $script_dir
fi

#檢測過濾文本是否存在,不存在則建立
if [[ ! -d $script_dir/exclude.txt ]];then
    rm $script_dir/exclude.txt -rf
fi

#生成過濾文本
for each in ${exclude_txt[@]} 
do
cat >> $script_dir/exclude.txt<<eof
$each
eof
done

cat > $script_dir/$test_name<<eof
#!/bin/sh

echo "\$1"
model=\$1
echo "\${model}"
version=\$2

case \$model in
eof

num=${#branch_name[@]}
for((i=0;i<$num;i++))
do
cat >> $script_dir/$test_name<<eof
    ${branch_name[$i]})
        echo "deploy_model: \${model}"
        echo "version: \${version}"
    sudo chown -R  apache:users ${local_dir[$i]}
    sudo rsync -zavP --exclude-from=$script_dir/exclude.txt --password-file=$rsync_scrt ${local_dir[$i]} apache@${server_ip[$i]}::apache$web_dir
    ;;
eof
done

cat >> $script_dir/$test_name<<eof
    *)
        exit
        ;;
esac
eof
echo "Rsync script is OK"
echo "========================================"

 

 

realgit

#!/bin/bash
#
# Rsync Install Script
# Last Updated 2018.02.02
# 
##### modify by Jinayf 2018.02.02 #####

######手動修改如下內容######

#真實腳本名稱
real_name='obs111.sh'
#預發佈本地目錄
pre_local_dir='/wos/obs96111/'
#真實發布本地目錄
real_locla_dir='/wos/obs230111/'
#預發佈備份目錄
pre_backups_dir='/data/wosbak/obs/pre111/'
#真實發布備份目錄
real_backups_dir='/data/wosbak/obs/real111/'
#代碼發佈目錄
web_dir='/data/www/vhosts/wos-obs.wondershare.cn/httpdocs/'
#預發佈IP
pre_ip=(192.168.10.96)
#真實發布IP,以空格隔開
real_ip=(192.168.10.195 192.168.10.196 192.168.10.201 192.168.10.203)
#腳本存放地址
script_dir='/data/wos/rsync/obs'
#過濾不一樣步內容,以空格隔開
exclude_txt=(/.git/ /runtime/ .env web/index.php config/main.php)
#口令文本
rsync_scrt='/usr/local/rsync/rsync.scrt'

######手動修改內容結束######

echo "========================================"
echo "Generating Rsync script"

#檢測腳本是否已經存在,存在則退出
if [[ -f "$script_dir/$real_name" ]];then
        echo "$script_dir/$real_name is exists!"
        exit
fi

#檢測本地目錄是否存在,不存在則建立
if [[ ! -d $pre_local_dir ]];then
    mkdir -p $pre_local_dir
fi

if [[ ! -d $real_locla_dir ]];then
    mkdir -p $real_locla_dir
fi

#檢測腳本存放目錄是否存在,不存在則建立
if [[ ! -d $script_dir ]];then
    mkdir -p $script_dir
fi

#檢測備份目錄是否存在,不存在則建立
if [[ ! -d $pre_backups_dir ]];then
    mkdir -p $pre_backups_dir
fi

if [[ ! -d $real_backups_dir ]];then
    mkdir -p $real_backups_dir
fi

#檢測過濾文件是否存在,存在則刪除
if [[ -f $script_dir/real_exclude.txt ]];then
        rm $script_dir/real_exclude.txt -rf
fi

#生成過濾文本
for each in ${exclude_txt[@]} 
do
cat >> $script_dir/real_exclude.txt<<eof
$each
eof
done

cat > $script_dir/$real_name<<eof
#!/bin/sh

echo "\$1"
model=\$1
echo "\${model}"
version=\$2

case \$model in
    Pre)
        echo "deploy_model: \${model}"
        echo "version: \${version}"       
        #同步代碼到發佈目錄        
    sudo chown -R  apache:users $pre_local_dir        
    for pi in ${pre_ip[@]} 
    do  
        sudo rsync -zavP --exclude-from=$script_dir/exclude.txt --password-file=$rsync_scrt $pre_local_dir apache@\$pi::apache$web_dir
    done         
        #建立備份目錄
        mkdir -p $pre_backups_dir\${version}
        #把代碼複製到備份目錄
        cp -r $pre_local_dir* $pre_backups_dir\${version}
        sudo chown -R  apache:users $pre_backups_dir\${version}
        ;;
    Real)
        echo "deploy_model: \${model}"
        echo "version: \${version}"
        #同步代碼到發佈目錄        
    sudo chown -R  apache:users $real_locla_dir        
    for ri in ${real_ip[@]}  
    do  
        sudo rsync -zavP --exclude-from=$script_dir/exclude.txt --password-file=$rsync_scrt $real_locla_dir apache@\$ri::apache$web_dir 
    done  
        #建立備份目錄
        mkdir -p $real_backups_dir\${version}
        #把代碼複製到備份目錄
        cp -r $real_locla_dir* $real_backups_dir\${version}
        sudo chown -R  apache:users $real_backups_dir\${version}
        ;;
    Rollback_Pre)
        echo "deploy_model: \${model}"
        echo "version: \${version}"         
    for pib in ${pre_ip[@]}  
    do 
            sudo rsync -zavP --exclude-from=$script_dir/exclude.txt --password-file=$rsync_scrt $pre_backups_dir\${version}* apache@\$pib::apache$web_dir        
    done
        ;;
    Rollback_Real)
        echo "rollback_model: \${model}"
        echo "version: \${version}"
    for rib in ${pre_ip[@]}  
    do
            sudo rsync -zavP --exclude-from=$script_dir/exclude.txt --password-file=$rsync_scrt $real_backups_dir\${version}* apache@\$rib::apache$web_dir
    done
        ;;
    *)
        exit
        ;;
esac

eof
echo "Rsync script is OK"
echo "========================================"
相關文章
相關標籤/搜索