yumでインストールもできますが、今回はソースから。
rsyncでのバックアップをcronで定期的に行いたかったのですが、
- サーバにexpectがインストールされていない
- yumが利用できない
ようなのでソースでインストールできないかちょっと調査。
こちらのサイトを参考にインストールしてみました。
以下は作業のコピペ。
まずはインストールディレクトリに移動
[root@localhost ~]# cd /usr/local/src/
中を確認すると
[root@localhost src]# ll
drwxr-xr-x 12 501 501 4096 10月 27 00:31 httpd-2.2.14
-rw-r–r– 1 root root 6684081 10月 4 05:56 httpd-2.2.14.tar.gz
drwxr-xr-x 23 root root 4096 10月 27 00:25 openssl-0.9.8k
-rw-r–r– 1 root root 3852259 3月 25 2009 openssl-0.9.8k.tar.gz
ApacheとOpenSSLだけありました。
次に、ソースをダウンロード。
「expect」と「Tcl」が必要になるようです。
それぞれ
http://expect.nist.gov/expect.tar.gz
http://jaist.dl.sourceforge.net/project/tcl/Tcl/8.4.14/tcl8.4.14-src.tar.gz
からダウンロードしました。
【注意】
今回利用したバージョンはそれぞれ
- expect-5.43
- tcl8.4.14
です。
バージョンの違いにより正常にインストールできないみたいです。
[root@localhost src]# wget http://expect.nist.gov/expect.tar.gz
–2010-03-15 23:46:26– http://expect.nist.gov/expect.tar.gz
expect.nist.gov をDNSに問いあわせています… 129.6.13.45
expect.nist.gov|129.6.13.45|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 525572 (513K) [application/x-gzip]
`expect.tar.gz’ に保存中
100%[==================================================================================================>] 525,572 266K/s 時間 1.9s
2010-03-15 23:46:29 (266 KB/s) – `expect.tar.gz’ へ保存完了 [525572/525572]
[root@localhost src]# wget http://jaist.dl.sourceforge.net/project/tcl/Tcl/8.4.14/tcl8.4.14-src.tar.gz
–2010-03-15 23:46:37– http://jaist.dl.sourceforge.net/project/tcl/Tcl/8.4.14/tcl8.4.14-src.tar.gz
jaist.dl.sourceforge.net をDNSに問いあわせています… 150.65.7.130
jaist.dl.sourceforge.net|150.65.7.130|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 3544609 (3.4M) [application/x-gzip]
`tcl8.4.14-src.tar.gz’ に保存中
100%[==================================================================================================>] 3,544,609 572K/s 時間 6.6s
2009-11-05 23:46:43 (523 KB/s) – `tcl8.4.14-src.tar.gz’ へ保存完了 [3544609/3544609]
確認してみると
[root@localhost src]# ll
-rw-r–r– 1 root root 525572 2月 3 2006 expect.tar.gz
drwxr-xr-x 12 501 501 4096 10月 27 00:31 httpd-2.2.14
-rw-r–r– 1 root root 6684081 10月 4 05:56 httpd-2.2.14.tar.gz
drwxr-xr-x 23 root root 4096 10月 27 00:25 openssl-0.9.8k
-rw-r–r– 1 root root 3852259 3月 25 2009 openssl-0.9.8k.tar.gz
-rw-r–r– 1 root root 3544609 10月 20 2006 tcl8.4.14-src.tar.gz
それぞれダウンロードできました。
で、まずは「Tcl」からインストール。
解凍して、
[root@localhost src]# tar xfvz tcl8.4.14-src.tar.gz
ディレクトリを移動して、
[root@localhost src]# cd tcl8.4.14/unix/
configureして、
[root@localhost unix]# ./configure –enable-shared –prefix=/usr
makeして、
[root@localhost unix]# make
make installすれば、
[root@localhost unix]# make install
インストールの完了です。
この時、生成されたバイナリに対してシンボリックを作成しておきます。
[root@localhost unix]# cd /usr/bin/
[root@localhost bin]# ln -s tclsh8.4 tclsh
次は「expect」のインストール。
こちらも解凍して、
[root@localhost src]# tar xfvz expect.tar.gz
ディレクトリを移動して、
[root@localhost src]# cd expect-5.43/
configureして、
[root@localhost expect-5.43]# ./configure –with-tclinclude=/usr/local/src/tcl8.4.14/generic –prefix=/usr
makeして、
[root@localhost expect-5.43]# make
make installすれば、
[root@localhost expect-5.43]# make install
インストールの完了です。
この後、「ldconfig」コマンドで動的ライブラリを更新します。
[root@localhost expect-5.43]# /sbin/ldconfig
これで使えるようになっているはず。
さっそく実験。
スクリプトは、
#!/bin/sh
#---------------------------------------#
# 変数の規定 #
#---------------------------------------#
LOCAL_DIR="/root/rsync/"
REMOTE_USER="hogehoge"
REMOTE_PASS="fugafuga"
REMOTE_HOST="192.168.1.100"
REMOTE_DIR="/home/user/public_html/rsync/"
#---------------------------------------#
# 同期処理の実行 #
#---------------------------------------#
expect -c "
spawn rsync -av --dry-run ${LOCAL_DIR} ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}
expect \"${REMOTE_USER}@${REMOTE_HOST}'s password:\"
sleep 1
send \"${REMOTE_PASS}\r\"
expect eof
"
こんな感じ。
実行すると、
[root@localhost ~]# ./rsync.sh
spawn rsync -av –dry-run /root/rsync/ hogehoge@192.168.1.100:/home/user/public_html/rsync/
hogehoge@192.168.1.100’s password:
building file list … done
./
fuga.txt
hoge.txt
sent 102 bytes received 38 bytes 56.00 bytes/sec
正常に動作してるってことはインストール成功ですね。
だんだんソースインストールも楽しくなってきました。
「configure」と「make」についてもちゃんと勉強しないとなーと思います。