Solarisでrsyncを実行する
- 2007.04.23
- Solaris
テスト用WebサーバでコンテンツがOKだったら、本番である公開用Webサーバへ手作業でhtmlファイルをアップしていた。これを楽にしたかった。
公開サーバ: Solaris9 (お客様が見ている公開用サーバ)
社内サーバ: Solaris10 (テスト用Webサーバ)
rsyncを導入することにした。しかし、設定は楽ではなかった。何日も上手くいかなかった。
で、「簡単な設定からはじめる」という手法を取り入れた。
最初から複数サーバ間で試さない。まずは1台のサーバ内でrsyncしてみることをお勧めする。
■RSYNCの使い方
基本(ローカルでのコピー)
rsync [オプション] コピー元 コピー先
sshでネットワーク越しのコピー(Pull、Get、入手する、手元に持ってくる)
rsync [オプション] -e ssh ユーザ名@ホスト名:ディレクトリパス ~/dir1/
sshでネットワーク越しのコピー (Push、Put、押し込む、あっちへ持っていく)
rsync [オプション] ~/dir1 -e ssh ユーザ名@ホスト名:ディレクトリパス
その他、rsync daemon を使う方法もある。詳細はこちらへ。
http://rsync.samba.org/ftp/rsync/rsync.html
オプション
■1台のマシンで試す(公開サーバでrsyncテスト)
まずは1台のサーバ内でrsyncして、動く喜びを味わう。
下準備として、/tmpにpublic_htmlを作って適当なindex.htmlファイルを置いておく。
自分のホームディレクトリに/tmp/public_htmlをコピーする。
コピー元: /tmp/public_html
コピー先: /export/home/suzuki/
$ cd $ rsync -av /tmp/public_html ./ building file list ... done public_html/ public_html/index.html
■1台のマシン上でssh経由でrsyncする(公開サーバでssh+rsyncテスト)
まずは1台のサーバ内でssh経由でrsyncにチャレンジする。
コピー元: /tmp/public_html
コピー先: /export/home/suzuki/
<基本のカタチ>
$ rsync -av -e ssh suzuki@localhost:/tmp/public_html ./ Password: (パスワードを入力する)
実行すると、
bash: rsync: command not found rsync: connection unexpectedly closed (0 bytes received so far) [receiver] rsync error: error in rsync protocol data stream (code 12) at io.c(359)
rsyncコマンドが見つからないというエラーが起きるので、次のように対処する。
■rsync: command not foundエラーに対処する
sshログイン後に、rsync: command not foundというエラーが発生する。
ログインユーザのホームディレクトリ/.profileにrsyncへのPATHを書いてもダメ。
オプション –rsync-path を追加することで、上手くいった。
$ rsync -av --rsync-path=/usr/local/bin/rsync -e ssh suzuki@localhost:/tmp/public_html ./ receiving file list ... done public_html/ public_html/index.html
オプションの説明
-a アーカイブモード。-rlptgoDを指定しているのと同じ効果。
-v 転送情報を表示する。
–delete ログイン先のマシンに存在しないファイルが、手元のマシンに存在したら削除する。
–rsync-path ログイン先のマシン内のrsyncコマンド。フルパスで指定する。
-e rshの代替コマンド。ここではsshを指定。
オプションの詳細な説明はこちらから。→ rsync
■サーバ間でrsyncを使ってファイルを転送する(公開サーバに社内サーバのhtmlを持ってくる)
公開サーバ: マシン名 web ログインユーザ名 webuser
社内サーバ: マシン名 test ログインユーザ名 testuser
公開サーバにログインして、社内サーバから最新のhtmlファイルを持ってくる。
◎公開サーバでの作業
社内サーバのhtmlをこっちへ持ってくるぞ。という作業。
$ rsync -av --rsync-path=/usr/local/bin/rsync -e ssh testuser@test.hoge.com:/tmp/public_html ./ receiving file list ... done public_html/ public_html/index.html
◎社内サーバでの作業
公開サーバからのssh接続要求に応えるために、普段通りsshでログインできていればよい。
特に作業なし。
以下、ご参考まで…。
■単純なrsyncを試すため、単純にrsyncdデーモンを起動する(公開サーバでrsync起動)
/etc/rsyncd.conf
/etc/rsyncd.secrets
上記ファイルは使わないで、rsyncdデーモンを起動する。
# rsync --daemon
起動したことをps -ef | grep rsync で確認しておく。
–config=/etc/rsyncd.confは、今のところ指定しないでおく。
■rsync –daemonで起動しない場合の対処
/etc/rsyncd.conf を手動で作ってあげる。空っぽのファイルでも良いが、pid fileの指定をしておくとそれっぽい。(何がそれっぽいかはつっこまないように)
rsyncd.conf
pid file = /tmp/rsyncd.pid
-
前の記事
Oracleのバックアップスクリプト 2007.04.23
-
次の記事
特定ファイルをまとめて削除する 2007.04.24