猫星人 cygwin + rsync 環境から Linux + rsync (server) + rsh 環境へ差分アップロード (ミラーリング)

♥「猫星通信」復活応援キャンペーン中★

前提 (環境)

LAN (プライベートネットワーク) 内の Web サーバ (Linux + Apache) に、 ローカル (Windows + cygwin) から HTML コンテンツを差分アップロード (更新) したい。

このサーバ機 (初代 OpenBlockS) ではなぜか ssh がうまく動かない。 普段は LAN 内からのみ telnet でログインしている。

LAN は外界 (インターネット) からは ADSL モデム (ルータ兼ファイアウォール?) で遮断されている。 FTP (21) と HTTP (80) のポートのみ静的 IP マスカレードで外から Web サーバ (OpenBlockS) に通している。 他のポート (telnet 含む) は外からはアクセスできない。

rsync のインストール

サーバ側は Tar ball を展開、

# ./configure --with-rsh=rsh
# make
# make install

で。

追記:どっちみちサーバ (rsyncd) として動かす場合は ssh は使わないので、 ここで --with-rsh=rsh は特に指定する必要はないのかも?

クライアント側は cygwin の setup.exe で。

設定

サーバ側 (前提)

/etc/rsyncd.conf の内容

pid file        = /var/run/rsyncd.pid
uid     = user1
gid     = user1
auth users      = user1
secrets file    = /etc/rsyncd.secrets
read only       = no
hosts allow     = 192.168.0.0/24, 127.0.0.1
hosts deny      = *

[webcontents]
comment = rsync web contents
path    = /home/web

/etc/rsyncd.secrets の内容

user1:PASSWORD1

rsyncd.secrets のパーミッションは 600、オーナは root。
auth user が実アカウントでも、 rsync のパスワードは実アカウントのログイン用パスワードと同じ必要はない。 (重要!)

rsync --daemon

で、デーモンとして起動しておく。

クライアント側 (前提)

アップロード用スクリプトの内容 (パスワードの渡し方がヒドい)

#!/bin/sh
echo PASSWORD1 | rsync -rvut --delete $1 $2 $3 /cygdrive/c/my_web/ rsync://user1@192.168.0.10/webcontents

rsync に (外から) パラメータを追加して渡せるよう $1 〜 $3 をつけてある。 (このへんはテキトー。主に -n を渡してアップロードされるファイルを確認するくらいしか使わないので)

メモ

パスワードを記述したファイルを用意してそっちから読み込ませるオプション (--password-file=FILE) を使おうとしたんだけどうまくいかず、 どーせ cygwin だしいいやと思って上記のように対処。
追記: Web で、 --password-file は現バージョンでは無効になっているらしいような記述を見かけた。 (その割には man を見てもしっかり出てくるんだけど…どうなってんだろ)

オプション -o -g まわりがよく分からず。 結局現状のように対処。 これならとりあえず新規ファイルも所有者 user1.user1 でアップロード (サーバ側に作成) される。 (こんなんばっかしだな…ちゃんとドキュメント探して読まなきゃなァ)

Windows からファイルを作成・更新すると、 cygwin 上でのパーミッションが 777 になってしまう。 (一度 644 などに修正しても、 Windows から更新するとまた 777 に戻る) rsync のオプションに -p をつけておくと、 このパーミッションのままアップロードされてしまうのであまり好ましくないため、 このオプションはつけない。
-p をつけずに rsync で新規ファイルをアップロードすると、サーバ上でのパーミッションは 755 などになる。 これは一旦 644 などに直しておけば、その後の (rsync での) アップデートでもサーバ上のパーミッションは維持される。 (新規ファイルを上げた時にいちいち直しとくのめんどくさいけど)


戻る / もっと戻る