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 "========================================"