1. 環境
有時我們的程序會部署在多個Linux服務器上,每次部署程序我們不可能把程序一一部署到各個服務器上,我們需要實現一個腳本來自動完成這事,這其中有兩個難點:
1. 程序文件必須同步到各個服務器
2. 在各個服務器上啓動程序
下面就圍繞這兩個問題來解決。
2. 解決問題
2.1 文件同步
文件同步實現起來比較簡單,你可以使用scp
,ftp
,lftp
,http
等等,這裏我給大家推薦rsync
這個命令一般Linux服務器默認安裝的都有,這個用來同步實在是方便多了,不懂的大家可以百度下,這裏我提供一個我使用的
rsync -avrh --exclude '*.swp' --exclude '*.log' --delete ./ root@HOST1:/home/foo
2.2 腳本遠程執行
先寫個測試腳本remote.sh
,後面用來遠程執行
#!/bin/bash
echo $1
echo $HOSTNAME
這個腳本用來打印第一個參數和運行時的主機名
執行下述這個命令將 remote.sh
在 HOST1
上執行,無需拷貝
ssh root@HOST1 'bash -s' < remote.sh test
運行結果:
test
HOST1
3. 總結
這裏只是提供一個小范例,想對rsync
更深入地可以Google
,從這個例子我們可以看出SSH
這個工具的強大之處,其實它的作用還有很多,比如端口映射等等也是非常用的。