Solarisでrsyncを実行する

テスト用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