*最小限のデプロイ [#t843847e]

**日付を得る [#m3e9d431]
`date '+%Y%m%d'`

***前日日付を得る [#cbbe2912]

**指定したフォルダから本日以降更新があったファイルを得る [#x82599a5]


**前日更新日分のファイルのみ検索及びコピーをする [#e406f953]
find /var/log -daystart -mtime 1 -exec cp {} /var/move/ \\; 


***1時間半前に修正したファイルのみ出力 [#h0dfca32]
find /Applications/play-1.2.4/ozaka -atime -30m -type f ! -path "*.svn*"

***3時間以内に修正したファイル一覧 [#gf0a5a6c]
find /Applications/play-1.2.4/ozaka -mmin -180 -type f ! -path "*.svn*"

**シェルスクリプトでn日前の日付を取得する [#cc85eae4]
http://ameblo.jp/sasaki0000/entry-10036208746.html

**findコマンドのよくある使い方 [#b7623087]
http://c-brains.jp/blog/wsg/10/04/09-095214.php

*ファイルパスからファイル名や拡張子を自由に取り出す [#odfde752]
紹介URL
http://d.hatena.ne.jp/zariganitosh/20100921/get_file_name_ext_dir

**例 [#d8890672]
fpath='/a/b/c.d.e'

**ファイル名を取り出す(拡張子あり) [#u555fbf2]
fname_ext="${fpath##*/}"
echo $fname_ext
***結果 [#t6eb93d9]
c.d.e


**ファイル名を取り出す(拡張子なし) [#f9d3a850]
fname="${fname_ext%.*}"
echo $fname
***結果 [#p8923506]
c.d


**拡張子を取り出す [#u263e144]
fext="${fpath##*.}"
echo $fext
***結果 [#c4bab320]
e

**ディレクトリを取り出す [#od8742b3]
fdir="${fpath%/*}"
echo $fdir
***結果 [#df73d66d]
/a/b

*補足 [#bd24620e]
${変数#パターン}	先頭から最短一致した部分を取り除く
${変数##パターン}	先頭から最長一致した部分を取り除く
${変数%パターン}	末尾から最短一致した部分を取り除く
${変数%%パターン}	末尾から最長一致した部分を取り除く

////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////

**作業フォルダ作成 [#bbf01232]
mkdir zzzz

**2時間以内に修正されたフォルダをコピーする(coreutils)が必要 [#q12bfa31]
find /Applications/play-1.2.4/ozaka -mmin -120 -type f ! -path "*.svn*" -exec gcp -p --parents {} ./zzzz/ \;

***$before分以内に変更があったファイル一覧 [#z7a5dd61]

function findnew() {
    find . -mmin -$1 -type f ! -regex ".*svn.*" ! -regex ".*zip" ! -regex ".*class" ! -regex ".*/tmp/.*" ! -path "*server.pid"
}
findnew 10

***オプション例 [#nc606594]
http://uguisu.skr.jp/Windows/find_xargs.html

***作業フォルダに$beforeぷん以内に修正のあったファイルを格納する [#w1b6b63b]
#ファイルを抽出します。


#////////////////////////////////////////////////
#findnewz 30 新しいファイル
#////////////////////////////////////////////////
function findnewz() {
    before=$1
    dupdir=zzzz
    appdir=ozaka
    initval
    cd /Applications/play-1.2.4/$appdir
    rm -r -f ../$dupdir
    mkdir ../$dupdir
    echo "更新されたファイルを集計中"
    find . -mmin -$before -type f ! -path "*.svn*" ! -regex ".*zip" ! -regex ".*class" ! -regex ".*/tmp/.*" ! -path "*server.pid"  -exec gcp -p --parents {} ../$dupdir/ \;
    cd ../$dupdir
    echo "圧縮中"
    zip -q -r $dupdir .
    mv $dupdir.zip ../
    cd ..
    mv $dupdir.zip $appdir.zip
    echo "各サーバに転送中"
    send $appdir.zip
    echo "転送完了"

}

#30分以内に変更があったファイルを転送します。
findnewz 30


#cd $playdir
#appdir=ozaka
#scp -i $pem $appdir.zip $web01:
#scp -i $pem $appdir.zip $web02:
#rm $appdir.zip


function initval(){
    pc04=program4@192.168.1.100
    web01=root@175.184.35.78
    web02=root@175.184.34.47
}


function send(){
    initval
    echo $web01
    scp -i $pem $1 $web01:
    echo $web02
    scp -i $pem $1 $web02:
    echo $pc04
    scp $1 $pc04:
}
send aa.txt

#/////////////////////////////////
#// expect化はだいたい動いてから
#/////////////////////////////////
#sshでログインして展開、コピー、後始末なexpect作成中だがまだだからとばす。

function findnewzp() {
    expect -c "
    
        set timeout -1

        spawn ssh root@175.184.35.78

        expect \"root@OzakaWebDev01 \"
        send \"unpackCode\n\" 

        expect \"root@OzakaWebDev01 \"
        send \"exit\n\" 

        expect \"program3\"


        spawn ssh root@175.184.34.47

        expect \"root@OzakaWebDev02 \"
        send \"unpackCode\n\" 

        expect \"root@OzakaWebDev02 \"
        send \"exit\n\" 

        expect \"program3\"


        spawn ssh program4@192.168.1.100
        expect -re \"program4:. program4.\"

	send \"unpackCode\n\"
        expect -re \"program4:. program4.\"

	send \"exit\n\"

    exit

    "
}

#//////////////////
# 確認中
#/////////////////

function unpacks() {
    expect -c "
        set timeout -1

        spawn ssh program4@192.168.1.100
        expect -re \"program4:. program4.\"

	send \"unpackCode\n\"
        expect -re \"program4:. program4.\"

	send \"exit\n\"
	
        exit
    "
}
unpacks




#//////////////////
# 確認中
#/////////////////

function unpacks() {
    expect -c "
        set timeout -1
        spawn ssh root@175.184.35.78

        expect \"root@OzakaWebDev01 \"
        send \"unpackCode\n\" 

        expect \"root@OzakaWebDev01 \"
        send \"exit\n\" 

        expect \"program3\"

        exit

    "
}
unpacks


#//////////////////////////////////

#$pc04には上げなくてもなんとかなる。サーバ編集目的だから
ssh $pc04


#//////////////////////////////////
#$pc04にログイン後
#//////////////////////////////////
#//////////////////////////////////
#unpackCode
#//////////////////////////////////
function unpackCode() {
    dupdir=zzzz
    appdir=ozaka
    mergedir=/Users/program4/play/ozaka
    cd ~
    rm -r -f $dupdir
    mkdir $dupdir
    mv $appdir.zip $dupdir/
    cd $dupdir
    unzip -q -o $appdir.zip
    rm -f $appdir.zip
    echo "ファイルのマージをしています。"
    find .  -type f ! -path "*server.pid" | while read f; do
      echo $f
      mkdir -p $mergedir/${f%/*}
      cp -a $f $mergedir/${f%/*}
    done
    echo "ok"
    cd ..
    rrestart.sh
    echo "pc04はマージ完了"
}
unpackCode
exit                            



#////////////////////////////////////////////////
#ここからweb01
#////////////////////////////////////////////////

ssh $web01

#ログイン
#functionは .bash_profileに格納済みです。
#////////////////////////////////////////////////
#unpackCode
#////////////////////////////////////////////////
function unpackCode() {
    dupdir=zzzz
    appdir=ozaka
    mergedir=/usr/local/play-1.2.4/ozaka
    cd ~
    rm -r -f $dupdir
    mkdir $dupdir
    mv $appdir.zip $dupdir/
    cd $dupdir
    unzip -q -o $appdir.zip
    rm -f $appdir.zip
    echo "ファイルのマージをしています。"
    find .  -type f ! -path "*server.pid" | while read f; do
      echo $f
      mkdir -p $mergedir/${f%/*}
      /bin/cp -f $f $mergedir/${f%/*}
    done
    echo "ok"
    cd ..
    rm -r -f $dupdir
}
unpackCode

#functionは .bash_profileに格納済みです。
#////////////////////////////////////////////////
#rrestart
#////////////////////////////////////////////////
function rrestart() {
    appdir=ozaka
    cd /usr/local/play-1.2.4
    play stop $appdir
    ps -ef | grep play.jar | grep -v grep | awk '{print $2}' | xargs kill
    ps -ef | grep ozaka | grep -v grep | awk '{print $2}' | xargs kill
    rm -f /usr/local/play-1.2.4/ozaka/server.pid
    play start $appdir
    return 0
}
rrestart


#==================================================

*参考になりそうなコード [#r4adaa24]
#!/usr/bin/expect

set timeout 5
spawn ssh program4@192.168.1.100
expect "program4:~ program4$ "
send "./deployscripts/step2.sh;exit\n"
interact


*参考になりそうなコード [#f9232d8d]
cd $dupdir
zip -q -r $dupdir .
mv $dupdir.zip ../
cd ..
mv $dupdir.zip ozaka.zip

*参考になりそうな転送用コード [#r531e20d]
scp -i ~/Downloads/hacozaka_private.pem /Applications/play-1.2.4/ozaka.zip root@175.184.35.78:
scp -i ~/Downloads/hacozaka_private.pem /Applications/play-1.2.4/ozaka.zip root@175.184.34.47:
rm -f /Applications/play-1.2.4/ozaka.zip


say 共有サーバに転送中です。  -v Kyoko
echo '共有サーバに送る'
pc04=program4@192.168.1.100
scp ozaka.zip $pc04:
say 共有サーバにログインしました
echo "■ダウンロードしたzipファイルでozakaを置き換える"
echo "./deployscripts/step2.sh "
echo $pc04
./deployscripts/login4.except
say 共有サーバのデプロイが完了しました。 -v Kyoko
say ニフティクラウドに転送中
./deployscripts/step3.sh
say 転送が完了しました。

*参考になりそうなニフティサーバ展開コード [#jd71e9d5]
cd /usr/local/play-1.2.4
play stop ozaka
ps -ef | grep play.jar | grep -v grep | awk '{print $2}' | xargs kill
ps -ef | grep ozaka | grep -v grep | awk '{print $2}' | xargs kill
rm -f /usr/local/play-1.2.4/ozaka/server.pid
rm -f -r ozaka_dup
rm -f -r ozaka
mkdir ozaka
cd ozaka
mv ~/ozaka.zip .
unzip -q -o ozaka.zip
rm -f ozaka.zip
cd ..

#設定ファイルをローカル環境用からニフティ用に切り替える
rm -f ozaka/conf/application.conf
mv ozaka/conf/application.nifty.conf ozaka/conf/application.conf
#これだけやれば再起動
play stop ozaka
ps -ef | grep play.jar | grep -v grep | awk '{print $2}' | xargs kill
ps -ef | grep ozaka | grep -v grep | awk '{print $2}' | xargs kill
rm -f /usr/local/play-1.2.4/ozaka/server.pid

play clean ozaka

play start ozaka
~

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS