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
这个工具的强大之处,其实它的作用还有很多,比如端口映射等等也是非常用的。